Android: pestañas en la parte inferior
He visto algunas charlas sobre esto, pero nada definitivo. ¿Hay una manera de poner las pestañas en un TabWidget a la parte inferior de la pantalla? ¿Si es así, cómo?
He intentado lo siguiente, pero no funcionó:
- Android 2.1 NullPointerException con TabWidgets
- Primera pestaña de atributos de android siempre se llama sin importar que establecemos tab2 como pestaña predeterminada
- Tabwidget divisores en Gingerbread vs ICS y superiores
- Android: orientation = "vertical" no funciona para TabWidget
- Android: personalización de la apariencia de Tabs con TabHost y TabWidget
A) establecer el tabwidget debajo de la framelayout
B) ajustar la gravedad del tabwidget a "fondo"
¡Gracias! Llappall
- No se encontró ningún recurso que coincida con el nombre dado: attr 'android: tabLayout'
- Divisores entre TabWidgets
- Tabwidget se superpone con el contenido de mi actividad
- TabWidget - ¿Cómo establecer la posición del texto del indicador?
- Cómo cambiar el tamaño de fuente de tabhost en android
- Android TabWidget en tema de luz
- Lengüetas de diferentes tamaños en Android
- TabWidget blanco color de primer plano?
Esta es la solución más simple, más robusta y escalable para obtener pestañas en la parte inferior de la pantalla.
- En su LinearLayout vertical, coloque el FrameLayout encima del TabWidget
- Establezca
layout_height
enwrap_content
en FrameLayout y TabWidget - Establecer el
android:layout_weight="1"
- Establecer el
android:layout_weight="0"
(0 es el predeterminado, pero para el énfasis, legibilidad, etc) - Establecer el
android:layout_marginBottom="-4dp"
(para eliminar el divisor inferior)
Código completo:
<?xml version="1.0" encoding="utf-8"?> <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" android:padding="5dp"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5dp" android:layout_weight="1"/> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" android:layout_marginBottom="-4dp"/> </LinearLayout> </TabHost>
Pruébelo;) Sólo ver el contenido de la FrameLayout (@ id / tabcontent), porque no sé cómo se manejará en caso de desplazamiento … En mi caso, funciona porque utilicé ListView como el contenido de mis pestañas . 🙂 Espero eso ayude.
<?xml version="1.0" encoding="utf-8"?> <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"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_above="@android:id/tabs" /> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout> </TabHost>
Hay una manera de quitar la línea.
1) Sigue este tutorial: android-tabs-with-fragments
2) A continuación, aplique el cambio RelativeLayout que Leaudro sugirió anteriormente (aplique los apoyos de diseño a todos los FrameLayouts).
También puede agregar un ImageView a la tab.xml en el artículo # 1 y obtener un iPhone muy similar a mirar a las pestañas.
Aquí hay una captura de pantalla de lo que estoy trabajando ahora mismo. Todavía tengo algo de trabajo que hacer, principalmente hacer un selector para los iconos y asegurar la distribución horizontal igual, pero usted consigue la idea. En mi caso, estoy usando fragmentos, pero los mismos principios deben aplicarse a una vista de pestaña estándar.
No estoy seguro de si funcionará para todas las versiones de Android (especialmente aquellas con cosas personalizadas de interfaz de usuario), pero pude eliminar la barra gris en la parte inferior agregando
android:layout_marginBottom="-3dp"
A la TabWidget XML …
Para todos aquellos que tratan de eliminar la línea de separación de la tabWidget, aquí es un proyecto de ejemplo (y su tutorial respectivo), que funcionan muy bien para personalizar las pestañas y, por tanto, eliminar los problemas cuando las pestañas están en la parte inferior. Proyecto Eclipse: android-custom-tabs ; Explicación original: blog ; Espero que esto ayudó.
Hay dos maneras de mostrar pestañas en la parte inferior de una actividad de pestaña.
- Uso del diseño relativo
- Uso del atributo Layout_weight
Por favor, consulte el enlace para obtener más detalles .
<?xml version="1.0" encoding="utf-8"?> <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:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" /> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" android:background="#252a31" android:tabStripEnabled="false" > </TabWidget> </LinearLayout> </TabHost>
Esto puede no ser exactamente lo que estás buscando (no es una solución "fácil" para enviar tus pestañas a la parte inferior de la pantalla), pero es sin embargo una solución alternativa interesante que me gustaría señalar a ti:
ScrollableTabHost está diseñado para comportarse como TabHost, pero con un scrollview adicional para caber más elementos …
Tal vez buscando en este proyecto de código abierto, encontrarás una respuesta a tu pregunta. Si veo algo más fácil, volveré a ti.
Yo estaba teniendo el mismo problema con las pestañas de Android cuando se trata de colocarlos en la parte inferior de la pantalla. Mi escenario era no usar un archivo de diseño y crear las pestañas en el código, también estaba buscando a las actividades de fuego de cada pestaña que parecía un poco demasiado complejo con otros enfoques por lo que, aquí está el código de ejemplo para superar el problema:
Agregando-pestañas-en-android-y-colocándolos
Sí, vea: link , pero usó xml layouts, no actividades para crear una nueva pestaña, así que ponga su código xml (configure paddingTop para FrameLayout – 0px) y luego escriba el código:
public class SomeActivity extends ActivityGroup { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); tab_host.setup(this.getLocalActivityManager()); TabSpec ts1 = tab_host.newTabSpec("TAB_DATE"); ts1.setIndicator("tab1"); ts1.setContent(new Intent(this, Registration.class)); tab_host.addTab(ts1); TabSpec ts2 = tab_host.newTabSpec("TAB_GEO"); ts2.setIndicator("tab2"); ts2.setContent(new Intent(this, Login.class)); tab_host.addTab(ts2); TabSpec ts3 = tab_host.newTabSpec("TAB_TEXT"); ts3.setIndicator("tab3"); ts3.setContent(new Intent(this, Registration.class)); tab_host.addTab(ts3); tab_host.setCurrentTab(0); }
}
Recomiendo usar este código para un trabajo estable, optimizado para fragmentos anidados en la ficha (por ejemplo, MapFragment anidado) y probado en "no mantener actividades": https://stackoverflow.com/a/23150258/2765497