Tuve el mismo problema y verifiqué el estilo TabLayout, y descubrí que su estilo predeterminado es el Widget.Design.TabLayout
que tiene implementaciones diferentes (normal, horizontal y sw600dp).
El que necesitamos es el de las 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>
De este estilo usaremos " tabGravity " (cuyos valores posibles son "centro" o "relleno") usando el valor "relleno".
Pero tenemos que ir más profundo, y luego vemos que este se extiende 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>
Entonces, a partir de este estilo, tendremos que anular " tabMaxWidth ". En mi caso, lo configuré para 0dp
que no tenga 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 lado a lado.