Cómo puedo declarar un fragmento como oculto en un diseño XML

Mi actividad declara todos sus fragmentos de GUI en un solo diseño XML. Sólo necesita mostrar algunos de los fragmentos en el momento del lanzamiento; El resto se muestran cuando el usuario interactúa con la aplicación. Una parte del diseño es la siguiente:

<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" /> 

Mi intención es que el fragmento list_panel sea ​​visible en el arranque, y el fragmento detail_panel se oculte hasta que el usuario seleccione algo de la lista.

De forma predeterminada, un fragmento empieza con el atributo isHidden como false. Eso significa que mi actividad tiene que iterar a través de los fragmentos cargados y llamar manualmente isHidden(true) en fragmentos como detail_panel al inicio.

Preferiría declarar el estado isHidden en el diseño XML. Sin embargo, la configuración de android:visibility="gone" en una declaración <fragment> no cambia el estado isHidden , y no puedo encontrar ninguna documentación sobre otro atributo que haría el truco.

¿Es posible establecer un atributo XML en un <fragment> para hacer que se oculte?

Nota: No me preocupa la visibilidad de la vista, me preocupa el valor de fragment.isHidden() . Esto afecta a cómo FragmentManager manipula la pila trasera y realiza animaciones. Si llama a transaction.show(fragment) en un fragmento cuya vista es invisible o desaparecida, pero el valor de fragment.isHidden() es falso, entonces el FragmentManager no hará que la vista sea visible. Consulte http://developer.android.com/reference/android/app/Fragment.html#isHidden () como referencia.

Me enfrenté a una situación similar, donde tuve que esconder un fragmento.

Simplemente incluí el fragmento dentro de un LinearLayout y marcó el diseño para ser visible / ido.

 <LinearLayout android:id="@+id/map_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> </LinearLayout> 

Esta respuesta es un poco tarde pensó que puede ser útil para futuras referencias. La visibilidad es parte de la clase Ver – Fragmento extiende el objeto aunque no tiene acceso a los valores de visibilidad. Una posibilidad es hacer que el fragmento sea un niño de un FrameLayout y llamando invisible o desaparecido en el diseño. Esto hará que el fragmento parezca estar oculto.

¡Espero eso ayude!

Basado en el post de Jyo, utilice esto:

 FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.hide(mFragment); fragmentTransaction.commit(); 

Esto ha funcionado para mí en el nivel 23 de la API. 'MFragment' es el fragmento que desea ocultar.

Tenemos el método isVisible para el fragmento que seeting visibilty a Gone no toma ningún espacio Donde como Invisble toma el espacio real de la visión.

 public void showHideFrgament(final Fragment fragment){ FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); if (fragment.isHidden()) { ft.show(fragment); Log.d("hidden","Show"); } else { ft.hide(fragment); Log.d("Shown","Hide"); } ft.commit(); } 
  • Definición de archivo xml para el botón para cambiar el fondo Y textColor basado en el estado
  • RadioGroup extendiendo RelativeLayout?
  • Android Studio 2.2.3: Error al ejecutar la aplicación: Actividad predeterminada no encontrada
  • Creación de un menú de diálogo emergente personalizado
  • keyBackground para teclas especiales - teclado android
  • Exhibición de la secuencia de la Cadena de Android Signo de porcentaje
  • Error al inflacionar la clase android.widget.CheckBox
  • Cómo cambiar la casilla de verificación (marcar casilla) color a blanco en android XML
  • Android: InflateException: Línea de archivo XML binario: Error al inflar la clase <unknown>
  • ¿Hay una manera más fácil de analizar XML en Java?
  • XMLResourceParser, no estoy seguro de cómo leer el XML que tengo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.