Ich hatte das gleiche Problem und überprüfte den TabLayout-Stil. Dabei stellte ich fest, dass der Standardstil Widget.Design.TabLayout
unterschiedliche Implementierungen aufweist (normal, Querformat und sw600dp).
Das, was wir brauchen, ist das für Tablets (sw600dp), das die folgende Implementierung hat:
<style name="Widget.Design.TabLayout" parent="Base.Widget.Design.TabLayout">
<item name="tabGravity">center</item>
<item name="tabMode">fixed</item>
</style>
In diesem Stil verwenden wir " tabGravity " (mögliche Werte sind "center" oder "fill") unter Verwendung des Werts "fill".
Aber wir müssen tiefer gehen, und dann sehen wir, dass sich diese von Base.Widget.Design.TabLayout
der Implementierung erstreckt:
<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>
Von diesem Stil aus müssen wir also " tabMaxWidth " überschreiben . In meinem Fall habe ich es 0dp
so eingestellt , dass es keine Begrenzung gibt.
Und mein Stil sah so aus:
<style name="MyTabLayout" parent="Widget.Design.TabLayout">
<item name="tabGravity">fill</item>
<item name="tabMaxWidth">0dp</item>
</style>
Und dann füllt die Registerkartenleiste den gesamten Bildschirm von einer Seite zur anderen.