studio iconos fragments example developers con android tabwidget

iconos - Android: pestañas en la parte inferior



tabs en android studio (11)

He visto algo de charla sobre esto, pero nada definitivo. ¿Hay alguna manera de colocar las pestañas 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 pestañas 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:

<?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>


Estaba teniendo el mismo problema con las pestañas 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 pestañas 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


Hay dos formas de mostrar pestañas en la parte inferior de una actividad de pestañas.

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

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


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 pestañas.

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 iconos 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.


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 pestañas y así 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 haya ayudado.


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 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>


Puede que esto no sea exactamente lo que estás buscando (no es una solución "fácil" para enviar tus pestañas 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.


Recomiendo usar este código para un trabajo estable, optimizado para fragmentos anidados en pestañas (por ejemplo, MapFragment anidado) y probado en "no mantener actividades": https://.com/a/23150258/2765497


Sí, mira: link , 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); }

}


<?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>