¿Por qué se crea un FrameLayout adicional para los fragmentos?
Mientras usa elvisor de jerarquía para reducir las jerarquías, he notado que en cada adición de un fragmento (tanto de forma "estática" como "dinámica") los fragmentos siempre se envuelven en unnuevo FrameLayout.
Aquí hay un ejemplo:
Este es midiseño de la actividad:
<RelativeLayout 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:contentDescription="mainActivityRoot" >
<TextView
android:id="@+id/hello_world"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<fragment
android:name="com.example.testfragments.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/hello_world" />
</RelativeLayout>
Y esta es ladiseño de fragmentos:
<ProgressBar android:id="@+id/ProgressBar1" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:contentDescription="mainFragmentRoot"
android:layout_height="match_parent" />
El código fuente de la actividad está vacío además delsetContentView
, Y el código fuente del fragmento solo contiene
@Override
public View onCreateView(...) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
Ahora,
Esperaría ver elPrograssBar
directamente en la jerarquía de la raíz de la actividad, pero en su lugar hay un FrameLayout adicional que no tengo idea de dónde viene. Aquí hay una captura de pantalla, pintó el marco adicional en AMARILLO:
Entonces, mi pregunta es: ¿de dónde viene? ¿Y puedo deshacerme de él? En mi aplicación real, esos FrameLayouts adicionales están creando jerarquías muy profundas que probablemente son malas para el rendimiento.
¡Gracias!