Android - Tabhost interior ScrollView
-
26-10-2019 - |
Pregunta
Estoy escribiendo una aplicación que implementa pestañas anidadas. Debido a que dos conjuntos de pestañas ocupan bastante espacio y, en general, porque la naturaleza del contenido me gustaría colocar todo el tabhost interno en una estructura desplazable. Puedo hacer TabContent de la actividad externa framelayout, linealLayout, incluso verflipper; Cuando intento hacerlo ScrollView, el programa se bloquea.
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ScrollView
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</TabHost>
Así que aparentemente a TaBhost le gusta vivir dentro de los marcos no scrollables. ¿Hay alguna forma de dar esto sin crear mucho desastre?
Solución
Lo siento, lo descubrí por mi cuenta. La solución es envolver el segundo tabhost dentro de una vista de desplazamiento dentro de su propio archivo XML. Eso funciona bien.
Exterior:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</TabHost>
Interno:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ViewFlipper
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
</TabHost>
</ScrollView>