Ho avuto lo stesso problema e ho controllato lo stile TabLayout e ho scoperto che il suo stile predefinito è Widget.Design.TabLayout
che ha implementazioni diverse (normale, orizzontale e sw600dp).
Quello di cui abbiamo bisogno è quello per tablet (sw600dp) che ha la seguente implementazione:
<style name="Widget.Design.TabLayout" parent="Base.Widget.Design.TabLayout">
<item name="tabGravity">center</item>
<item name="tabMode">fixed</item>
</style>
Da questo stile useremo " tabGravity " (i cui valori possibili sono "center" o "fill") usando il valore "fill".
Ma dobbiamo andare più in profondità, e quindi vediamo che questo si estende da Base.Widget.Design.TabLayout
, quale implementazione è:
<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>
Quindi, da questo stile dovremo sostituire " tabMaxWidth ". Nel mio caso l'ho impostato su 0dp
, quindi non ha limiti.
E il mio stile sembrava così:
<style name="MyTabLayout" parent="Widget.Design.TabLayout">
<item name="tabGravity">fill</item>
<item name="tabMaxWidth">0dp</item>
</style>
E quindi la barra delle schede riempirà l'intero schermo da un lato all'altro.