Android: cuando / por qué debo usar FrameLayout en lugar de Fragment?
Estoy construyendo un diseño para pantallas grandes, que se supone que consiste en 2 partes diferentes, una izquierda y una derecha. Para hacer eso pensé usando 2 Fragmentos es la opción correcta.
Luego eché un vistazo al ejemplo de la navegación con el Master / Detail-Flow . Tiene un diseño de 2 paneles, donde a la derecha está la navegación, ya la izquierda está la vista de detalle.
- Comprobar fragmento se presenta en framelayout o no en android?
- Rotación de 90 grados en la vista web de FrameLayout en Android
- FrameLayout a RelativeLayout ClassCastException incluso si no hay FrameLayout usado
- Color del fondo del framelayout del remoteview
- ¿Diferencia entre el marco y el diseño relativo?
Pero en ese ejemplo, diferente a lo que esperaba ver, para la vista de detalle hay un FrameLayout
que entonces contiene un Fragment
, en lugar de un Fragment
directamente.
La disposición XML se parece a esto (un ejemplo):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:baselineAligned="false" android:divider="?android:attr/dividerHorizontal" android:orientation="horizontal" android:showDividers="middle" tools:context=".WorkStationListActivity" > <fragment android:id="@+id/workstation_list" android:name="de.tuhh.ipmt.ialp.history.WorkStationListFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@android:layout/list_content" /> <FrameLayout android:id="@+id/workstation_detail_container" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" /> </LinearLayout>
Mi pregunta ahora es: ¿por qué se utiliza un FrameLayout
lugar del Fragment
sí para la vista de detalle? ¿Cuál es la razón o la ventaja? ¿Debo usarlo también?
- Superposición de texto sobre imageview en framelayout mediante programación - Android
- Escala la imagen de fondo para ajustar el contenido del diseño
- ClassCastException LinearLayout LayoutParams
- Uso de FrameLayout como fondo de pantalla en vivo
- Layout_marginLeft funciona correctamente en Android API <11 cuando View in FrameLayout
- Android cámara de pantalla completa - manteniendo la cámara seleccionada ratio
- Colocar la vista dentro de FrameLayout en Android
- Android: Establecer márgenes en un FrameLayout mediante programación, no funciona
El contenedor de detalle es FrameLayout
porque el Fragment
que se muestra se reemplazará mediante el método replace()
FragmentTransaction
.
El primer argumento a replace()
es el ID del contenedor cuyos Fragmentos serán reemplazados. Si FrameLayout en este ejemplo se reemplazó con un fragmento, entonces tanto el WorkStationListFragment
como cualquier fragmento de detalle que se muestra actualmente se reemplazaría por el nuevo fragmento. Al encapsular el fragmento dentro de un FrameLayout, puede reemplazar sólo los detalles.
Agregue un fragmento a una actividad utilizando <fragment>
si no lo necesita para responder a los cambios en la interfaz de usuario. De lo contrario, utilice un <FrameLayout>
Un diseño de trama es un tipo de grupo de vistas que se utiliza para bloquear un área en la pantalla.
- Android: cómo obtener la intención recibida por un servicio?
- Cómo reanudar la actividad en lugar de reiniciar al ir "arriba" de la barra de acción