Wie kann der Tab-Layout-Tabmodus für Tablets am besten eingestellt werden?

8

Ich verwende TabLayout aus der Android Design-Support-Bibliothek. Wie kann ich MODE_SCROLLABLE zusammen mit GRAVITY_FILL verwenden, so dass es über alle Geräte und Ausrichtungen hinweg gleich aussieht?

Momentan, wenn ich MODE_SCROLLABLE verwende, sieht es auf 7 "-Tablet gut aus, aber auf 10" -Tablet sind die Tabs nach links ausgerichtet. Ich möchte GRAVITY_FILL für alle Größen verwenden können.

Das ist mein Tablayout:

%Vor%

und ich setze den Modus im Code

%Vor%     
Sammys 08.07.2015, 21:44
quelle

4 Antworten

10

In der TabLayout.GRAVITY_FILL-Dokumentation :

  

Schwere verwendet, um die TabLayout so viel wie möglich zu füllen. Diese Option wird nur wirksam, wenn sie mit MODE_FIXED verwendet wird.

Wenn Sie Ihren Modus auf MODE_SCROLLABLE setzen, werden die Registerkarten immer von der Startkante aus ausgerichtet. Der einzige Unterschied zwischen Tablets und Telefonen für MODE_SCROLLABLE ist die minimale Breite der Registerkarten, wie in tabs material design spec .

Beachten Sie, dass Sie sowohl den Schwerkraft- als auch den Tabmodus über XML angeben können, wenn Sie die Ansicht so einstellen möchten, dass sie immer scrollbar ist:

%Vor%     
ianhanniballake 08.07.2015, 23:10
quelle
4
%Vor%     
Jayesh Suvagiya 27.08.2015 15:36
quelle
3

Ich habe eine sehr ähnliche Lösung zu Jayesh verwendet, aber meine verwendet eine minimale Breite für die Tabs und berechnet basierend darauf, welcher Modus verwendet werden soll. Auf diese Weise müssen Sie nur wissen, was die kleinste akzeptable Größe für Ihre Tabs ist. Wenn sie alle Platz genug hätten, würden sie sie ausdehnen, um den gesamten Platz zu füllen. Wenn es zu viele wären, würde sie die minimale Breite haben und zu scrollbar werden.

%Vor%

Im Xml hat das Tablayout nur diese Eigenschaften

%Vor%     
Matt 14.05.2016 02:23
quelle
0

Ich habe das gleiche Problem gefunden Meiner Meinung nach gibt es keine einfache Lösung, um das Problem zu lösen. In dem FIX_MODE haben alle Registerkarten in dem Tablayout dieselbe Breite, die auf dem maximalen Element basiert Und im SCROLL_MODE haben alle Registerkarten ihre eigene Breite Die Lösung wird also etwas komplex.

Ich habe zwei Lösungen, erste Lösung gedacht: geben Sie den Text jedes Tabs einen leeren Platz, um alle Elemente gleich breit zu machen und gleichzeitig den Bildschirm zu füllen Die andere Lösung verwendet customview in tablayout, genau wie in diesem Artikel , dann können Sie die Artikelbreite manuell festlegen.

    
lirui 17.07.2015 09:02
quelle