Android: tabs en la parte inferior

He visto algo de charla sobre esto, pero nada definitivo. ¿Hay alguna manera de colocar las tabs en un TabWidget en la parte inferior de la pantalla? ¿Si es así, cómo?

Intenté lo siguiente, pero no funcionó:

a) configurando el tabwidget debajo del framelayout
b) establecer la gravedad de la librabilidad en “abajo”

¡Gracias! llappall

Esta es la solución más simple, robusta y escalable para obtener tabs en la parte inferior de la pantalla.

  1. En su LinearLayout vertical, coloque el FrameLayout sobre el TabWidget
  2. Establezca layout_height en wrap_content en FrameLayout y TabWidget
  3. Establecer el android:layout_weight="1"
  4. Establezca android:layout_weight="0" (0 es el predeterminado, pero para enfatizar, legibilidad, etc.)
  5. Establezca android:layout_marginBottom="-4dp" (para eliminar el divisor inferior)

Código completo:

        

Pruébalo;) Solo mira el contenido de 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 tabs . 🙂 Espero eso ayude.

        

Hay una manera de eliminar la línea.

1) Siga este tutorial: android-tabs-with-fragments

2) Luego aplique el cambio RelativeLayout que Leaudro sugirió arriba (aplique los accesorios de diseño a todos los FrameLayouts).

También puede agregar un ImageView a la pestaña.xml en el elemento n. ° 1 y obtener un aspecto similar al iPhone en las tabs.

Aquí hay una captura de pantalla de lo que estoy trabajando en este momento. Todavía tengo algo de trabajo por hacer, principalmente hacer un selector para los icons y asegurar una distribución horizontal igual, pero se entiende la idea. En mi caso, estoy usando fragmentos, pero los mismos principios deberían aplicarse a una vista de pestaña estándar.

enter image description here

No estoy seguro si funcionará para todas las versiones de Android (especialmente aquellas con elementos de interfaz de usuario personalizados), pero pude eliminar la barra gris en la parte inferior al agregar

  android:layout_marginBottom="-3dp" 

al TabWidget XML …

Para todos aquellos de ustedes que intentan eliminar la línea de separación del tabWidget, aquí hay un proyecto de ejemplo (y su respectivo tutorial), que funciona muy bien para personalizar las tabs y así eliminar los problemas cuando las tabs están en la parte inferior. Proyecto Eclipse: android-custom-tabs ; Explicación original: blog ; Espero que esto haya ayudado.

Hay dos formas de mostrar tabs en la parte inferior de una actividad de tabs.

  1. Usando diseño relativo
  2. Usando el atributo Layout_weight

Por favor, consulte el enlace para más detalles .

         

Puede que esto no sea exactamente lo que estás buscando (no es una solución “fácil” para enviar tus tabs al pie de la pantalla) pero, no obstante, es una solución alternativa interesante que me gustaría señalarte:

ScrollableTabHost está diseñado para comportarse como TabHost, pero con una vista de desplazamiento adicional para adaptarse a más elementos …

tal vez al profundizar en este proyecto de código abierto encuentres una respuesta a tu pregunta. Si veo algo más fácil, volveré contigo.

Estaba teniendo el mismo problema con las tabs de Android al tratar de colocarlas en la parte inferior de la pantalla. Mi caso era no usar un archivo de diseño y crear las tabs en el código, también estaba buscando disparar las actividades de cada pestaña que parecía un poco demasiado complejo usando otros enfoques, así que aquí está el código de muestra para resolver el problema:

adding-tabs-in-android-and-placing-them

Sí, mira: enlace , pero usó diseños xml, no actividades para crear una nueva pestaña, así que pon el código xml (establece paddingTop para FrameLayout – 0px) y luego escribe 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 nesteds en tabs (por ejemplo, MapFragment nested) y probado en “no mantener actividades”: https://stackoverflow.com/a/23150258/2765497