Ich habe Setup-Registerkarten als UPDATE 29/05/2015 diesen Beitrag. Tabs nehmen auf meinem Nexus 4-Handy die volle Breite ein, auf dem Nexus 7-Tablet jedoch in der Mitte und decken nicht die volle Bildschirmbreite ab.
Nexus 7 Screenshot Nexus 4 Screenshot
Antworten:
Eine "einfachere" Antwort, die von Kaizie ausgeliehen wurde, würde nur
app:tabMaxWidth="0dp"
in IhrerTabLayout
XML- Datei hinzugefügt werden :quelle
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:
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: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:
Und dann füllt die Registerkartenleiste den gesamten Bildschirm von einer Seite zur anderen.
quelle
Lösung für scrollbar: (TabLayout.MODE_SCROLLABLE), dh wann immer Sie mehr als 2 Registerkarten benötigen (dynamische Registerkarten)
Schritt 1: style.xml
Schritt 2: Ihr XML-Layout
Schritt 3: In Ihrer Aktivität / Fragment, wo immer Sie Registerkarten haben.
quelle
addTab
die Gewichtung für jede Registerkarte beim Hinzufügen überschrieben und festgelegt.override fun addTab(tab: Tab, position: Int, setSelected: Boolean) { super.addTab(tab, position, setSelected) allotEachTabWithEqualWidth() }
Wenden Sie Folgendes auf die
TabLayout
Ansicht an, um zu erzwingen, dass Registerkarten die volle Breite einnehmen (in gleiche Größen aufgeteilt) :quelle
TabLayout
eingestellt sind. Dies führt dazuapp:tabMode=“scrollable”
, dass die Registerkarten eine feste Länge haben (lange Wörter werden umbrochen) und die Registerkarten nicht mehr verschoben werden, wodurch die Registerkarten im Wesentlichen wieder „fest“ werden.Dies ist hilfreich, die Sie versuchen müssen
quelle
arbeite für mich. Dies haben auch
xmlns:app="http://schemas.android.com/apk/res-auto"
quelle
Für mich hat der folgende Code funktioniert und war genug.
quelle
Überprüfen Sie den folgenden Code auf Lösungen.
Unten ist der Layoutcode:
Beachten Sie, dass Sie für die dynamische Anzahl der Registerkarten nicht vergessen haben, setTabNumbers (tabcount) aufzurufen.
Referenz von https://medium.com/@elsenovraditya/set-tab-minimum-width-of-scrollable-tablayout-programmatisch-8146d6101efe
quelle
Lösung für Scrollable (Kotlin)
In XML:
In Kotlin:
In meinem Fall, wenn weniger als 3 Registerkarten vorhanden sind, reserviere ich den gleichen Speicherplatz.
Hinweis: Wenn die Bedingung Ihren Anforderungen entspricht
quelle
Warum all diese hektische Arbeit? Legen Sie einfach
app:tabMode="scrollable"
in Ihrem TabLayout in XML. Das ist es.quelle
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
folgt festlegen. Dies ist auch nur eine Eigenschaft, die für tabLayout festgelegt werden muss, unabhängig davon, wie viele Registerkarten Sie entweder statisch oder dynamisch hinzufügen.In meiner Variante dieses Problems hatte ich 3 Tabs mittlerer Größe, die auf Tablets nicht die volle Breite einnahmen. Ich brauchte nicht, dass die Registerkarten auf Tablets scrollbar sind, da Tablets groß genug sind, um die Registerkarten ohne Scrollen zusammen anzuzeigen. Die Registerkarten mussten jedoch auf Telefonen gescrollt werden können, da die Telefone zu klein sind, um alle Registerkarten zusammen anzuzeigen.
Die beste Lösung in meinem Fall war eine hinzuzufügen
res/layout-sw600dp/main_activity.xml
Datei, in denen die einschlägigen TabLayout haben könntenapp:tabGravity="fill"
undapp:tabMode="fixed"
. Aber in meinem regelmäßigenres/layout/main_activity.xml
, verließ ich ausapp:tabGravity="fill"
undapp:tabMode="fixed"
und hatteapp:tabMode="scrollable"
statt.quelle
Bitte beachten Sie, dass Sie auch einstellen müssen
den ganzen Raum füllen
quelle