[android] La pestaña no ocupa todo el ancho en el dispositivo Tablet



Answers

Tuve el mismo problema y revisé el estilo TabLayout, y encontré que su estilo predeterminado es Widget.Design.TabLayout que tiene diferentes implementaciones (normal, horizontal y sw600dp).

El que necesitamos es el de tabletas (sw600dp) que tiene la siguiente implementación:

<style name="Widget.Design.TabLayout" parent="Base.Widget.Design.TabLayout">
        <item name="tabGravity">center</item>
        <item name="tabMode">fixed</item>
 </style>

A partir de este estilo, utilizaremos " tabGravity " (los valores posibles son "center" o "fill") utilizando el valor "fill".

Pero tenemos que profundizar, y luego vemos que este se extiende desde Base.Widget.Design.TabLayout , cuya implementación es:

<style name="Base.Widget.Design.TabLayout" parent="android:Widget">
    <item name="tabMaxWidth">@dimen/tab_max_width</item>
    <item name="tabIndicatorColor">?attr/colorAccent</item>
    <item name="tabIndicatorHeight">2dp</item>
    <item name="tabPaddingStart">12dp</item>
    <item name="tabPaddingEnd">12dp</item>
    <item name="tabBackground">?attr/selectableItemBackground</item>
    <item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
    <item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>

Por lo tanto, a partir de este estilo, deberemos reemplazar " tabMaxWidth ". En mi caso, lo configuré en 0dp , por lo que no tiene límite.

Y mi estilo se veía así:

<style name="MyTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabGravity">fill</item>
        <item name="tabMaxWidth">0dp</item>
</style>

Y luego la barra de pestañas llenará toda la pantalla de un lado a otro.

Question

Tengo pestañas de configuración como ACTUALIZAR 29/05/2015 this publicación. Las pestañas ocupan todo el ancho de mi móvil Nexus 4, pero en la tableta nexus 7 se encuentran en el centro y no cubren el ancho de la pantalla completa.

Captura de pantalla de Nexus 7 Captura de pantalla de Nexus 4




¿Por qué todo ese trabajo agitado? Simplemente ponga la app:tabMode="scrollable" en su TabLayout en XML. Eso es.




Para mí, el siguiente código funcionó y fue suficiente.

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"/>



Para forzar que las pestañas ocupen todo el ancho (dividido en tamaños iguales), aplique lo siguiente a la vista TabLayout :

TabLayout tabLayout = (TabLayout) findViewById(R.id.your_tab_layout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);



<android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMaxWidth="0dp"
            app:tabGravity="fill"
            app:tabMode="fixed" />

trabaja para mi. Esto también tiene xmlns:app="http://schemas.android.com/apk/res-auto"






Related