PDA

Ver la Versión Completa : [ CONSULTA ] Tabs en action bar - Pantalla horizontal


joselehhh
07/11/14, 11:28:13
Buenas,
Actualizando estos días una sencilla app que hice a material design, me he encontrado con un problemilla que no se como solucionar.

Antes yo tenía un tabhost con dos tabs, al querer actualizar el diseño, vi que las tabs ahora se integraban con el ActionBar quedando como un todo en uno. Cambié entonces la forma de crear mis tabs, pasando de un tabhost a dos fragments:
En el tablistener instancio los fragments

ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_M ODE_TABS);
actionBar.setTitle(R.string.activity_main_title);
actionBar.setDisplayShowTitleEnabled(true);
Tab tab = actionBar.newTab()
.setText("2x2")

.setTabListener(new TabListener<Tab1>(
this, "2x2", Tab1.class));
actionBar.addTab(tab);

tab = actionBar.newTab()
.setText("3x3")
.setTabListener(new TabListener<Tab2>(
this, "3x3", Tab2.class));
actionBar.addTab(tab);


El caso es que la vista en el modo vertical es correcta (dejo las capturas) pero en horizontal los tabs se quedan en la misma línea que el label del actionbar y no se representan bien.

A ver si alguien puede guiarme o algo. Muchas gracias!

joselehhh
10/11/14, 15:52:09
Lo subo por si alguien tiene una ligera idea de lo que puede ser. Muchas gracias!

LEAJIM_454
15/11/14, 23:26:41
Para ayudarte supongo que deverias poner el el xml de tu layout donde está el tab y estas seguro que no tienes un dos layouts? tal ves en uno de esos dice en layout_width="wrap_content" en ves de "match_parent", estoy casi seguro que no es problema de codigo java sino mas bien de tu layout... saludos.

joselehhh
16/11/14, 01:15:00
Hola, gracias por la respuesta.

Antes usaba un tabhost que tenía definido en un layout desde el cual incluía los dos tabs como otros dos layouts diferentes.
include tab1.xml
include tab2.xml

Pero ahora me he puesto a actualizar la app para ver que tal quedaba con el nuevo estilo Material design y vi que los tabs iban integrados en el action bar de forma que con el código que puse en el primer mensaje se crean los tabs.

Lo único que tengo en un xml es la personalización del estado de selección y pulsación de las tabs como un drawable. No se porqué en horizontal se quedan los tabs como embebidos en una línea.

He visto algunas cosas por stackoverflow pero no me han dado resultado, así que no se realmente que puede ser.

Un saludo!

joselehhh
25/11/14, 19:30:25
Mirando los stilos encontre que tenía estas dos líneas:


<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="android:windowNoTitle">true</item>
<item name="actionBarTabStyle">@style/AppTheme.ActionBarTabStyle</item>
<item name="android:actionBarTabStyle">@style/AppTheme.ActionBarTabStyle</item>

</style>


Eliminé
<item name="actionBarTabStyle">@style/AppTheme.ActionBarTabStyle</item>
y ahora no es que se haya solucionado del todo, pero por lo menos en horizontal hay mas espacio entre las tabs. Otra cosa que he visto es que si inicio la app teniendo el móvil en horizontal, si que se representa bien, es decir, alineado con el título, con espacio suficiente entre las tabs y con la barrita de color que indica el estado selected. Si la inicio en vertical y luego lo pongo en horizontal, los tabs mantienen suficiente espacio entre ellos pero no parecen estar alineados con el título, como pasaba con las capturas de arriba, como tampoco se muestra la barrita que indica cual está seleccionada...