Мне нужно скрыть WebVew во время загрузки его веб-контента. Я попытался сделать это с другим видом следующим образом:
<WebView android:scrollbars="none" android:id="@+id/id_webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <View android:visibility="gone" android:scrollbars="none" android:id="@+id/id_view" android:layout_width="fill_parent" android:layout_height="fill_parent" />
Когда я хочу скрыть WebView, я изменяю видимость представления на «видимый» (View.setVisibility (View.VISIBLE);). Но View не охватывает WebView, и он не скрывает. Мне нужно поместить представление на фронт во время загрузки WebView.
Хотя я считаю этот подход странным, вы должны проверить родительский контейнер этих представлений.
Если LinearLayout не удивительно, что View не распространяется на WebView. Если вы хотите использовать макеты пользователей, попробуйте использовать RelativeLayout и выравнивать элементы одинаково, например, добавив оба представления:
android:layout_alignParentTop="true" android:layout_alignParentLeft="true"
Другой вариант (и более правильный IMO) – использовать ViewSwitcher или ViewFlipper. Он переключается между его дочерними элементами с помощью методов showNext (), showPrevious () (в ViewFlipper) и getNextView () (в ViewSwitcher). На самом деле легко реализовать и использовать. Посмотрите несколько примеров.
Просто быстрый совет:
<!-- ViewSwitcher or ViewFlipper --> <ViewSwitcher android:id="@+id/view_switcher" android:layout_width="wrap_content" android:layout_height="wrap_content"> <View android:scrollbars="none" android:id="@+id/id_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <WebView android:scrollbars="none" android:id="@+id/id_webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </ViewSwitcher>
И в вашем коде:
// This will hide currently displayed and reveal next ((ViewSwitcher) findViewById(R.id.view_switcher)).getNextView(); // Or, in case of ViewFlipper: // This will hide currently displayed and reveal next ((ViewFlipper) findViewById(R.id.view_switcher)).showNext();
Разница между ними заключается в том, что Switcher может иметь только 2 детей и имеет фабрику для создания представлений.
PS Смешанные два аниматора, отредактированный пост.