Моя активность объявляет все ее фрагменты графического интерфейса в одном XML-макете. В момент запуска нужно отобразить только несколько фрагментов; остальные отображаются, когда пользователь взаимодействует с приложением. Часть макета выглядит следующим образом:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/map_panel"
android:name="com.example.MapPanel"
android:layout_width="match_parent"
android:layout_height="@dimen/map_panel_height" />
<fragment
android:id="@+id/list_panel"
android:name="com.example.ListPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/map_panel" />
<fragment
android:id="@+id/detail_panel"
android:name="com.example.DetailPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/map_panel"
android:visibility="gone" />
Мое намерение состоит в том, что фрагмент list_panel
отображается при запуске, а фрагмент detail_panel
скрыт до тех пор, пока пользователь не выберет что-то из списка.
По умолчанию фрагмент начинается с атрибута isHidden
как false. Это означает, что моя активность должна проходить через загруженные фрагменты и вручную вызывать isHidden(true)
на фрагменты, такие как detail_panel
во время запуска.
Я бы предпочел объявить статус isHidden
в макете XML. Однако установка android:visibility="gone"
в объявлении <fragment>
не изменяет статус isHidden
, и я не могу найти документацию по другому атрибуту, который бы сделал трюк.
Можно ли установить атрибут XML на <fragment>
, чтобы он был скрыт?
Примечание. Меня не интересует видимость вида, меня интересует значение fragment.isHidden()
. Это влияет на то, как FragmentManager управляет обратным стеком и выполняет анимацию. Если вы вызываете transaction.show(fragment)
на фрагмент, чей вид невидим или ушел, но значение fragment.isHidden()
равно false, то FragmentManager не сделает вид видимым. Для справки см. http://developer.android.com/reference/android/app/Fragment.html#isHidden().