example - tabhost android studio
TABS Android con fragmentos (2)
He estado trabajando en un proyecto pequeño que consiste en una GUI con varias pestañas. Soy bastante nuevo con el concepto de fragmentos, sin embargo, parece que son una mejor práctica dentro del panorama de pestañas de Android. Logré codificar una aplicación de pestañas simple, que alterna entre 3 pestañas.
El único problema que tengo es cuando trato de colocar las pestañas en la parte inferior de la pantalla. Cuando están en la parte inferior, el widget de pestañas cubre el contenedor (framelayout en este caso) y, por lo tanto, no ocurre nada, la pantalla permanece igual al hacer clic en las distintas pestañas.
El siguiente diseño XML representa la versión correcta (donde las pestañas se encuentran en la parte superior de la pantalla):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
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:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>
<FrameLayout
android:id="@+android:id/realtabcontent"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</TabHost>
</LinearLayout>
El siguiente diseño XML representa la versión que no funciona, cuando las pestañas están en la parte inferior de la pantalla:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
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"
>
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
/>
<FrameLayout
android:id="@+android:id/realtabcontent"
android:layout_width="fill_parent"
android:layout_height="0dp"
/>
</RelativeLayout>
</TabHost>
</LinearLayout>
Cambié el layour a relativelayout y agregué este comando: android: layout_alignParentBottom = "true" al tabwidget. ¿Alguien tiene una idea alternativa de cómo puedo solucionar este problema? Gracias por adelantado.
En general, usar pestañas en la parte inferior de la pantalla es una mala solución (vea las pautas de diseño de Android ).
Para su solución: coloque TabWidget
al final de la lista de vistas. Debido a que el dibujo es un proceso de línea y los fragmentos de este su caso se ahogó superior TabWidget
Puede usar peso en su lugar. Pruebe esta marca de diseño
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
Puede reemplazar FragmentTabHost con la propia clase TabHost. Entonces, tus pestañas estarán en la parte inferior de la pantalla. Tenga cuidado con los pesos anidados (son malos para el rendimiento) y la jerarquía de vista profunda (especialmente para android <4).