Verschiedene tab-Breite für TabLayout
Ich bin mit TabLayout & ViewPager.
Ich versuche, ändern Sie die Größe der Registerkarte, wie Whatsapp (Kamera-Symbol).
Die Größe der drei Register gleich ist, aber die Registerkarte Kamera ist kleiner.
In jedem Versuch habe ich die Größe der Tabs bleibt die gleiche (gleich über alle Registerkarten).
Danke.
- es gibt 4 ping-Symbol ,3 png haben gleiche Höhen und breiten.Ist unterschiedlich, wie Kamera-Symbol.
- Ich versuche, die Größen ändern, aber es ist unmöglich. Sie kommen immer in gleicher Größe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie senken Sie das Gewicht des LinearLayout der entsprechenden Registerkarte.
Hoffe, das hilft!
@digger die Antwort arbeitet. Allerdings, wenn Sie wollen, dass die Registerkarte, die ein Symbol hat, nur umschließt seinen Inhalt, Sie können Gewicht zu
0
und BreiteLinearLayout.LayoutParams.WRAP_CONTENT
. Es funktionierte für mich.Hier habe ich genommen, 5 Register und machte den 1. tab-Breite ist 12% der Bildschirm Breite und rest 4 teilen sich die Verbleibende Breite. Tut es nach einiger Verzögerung von 400 MS nach dem aufblasen der Ansichten.
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
tabs von ungleicher Breite
Alle Antworten bisher vernachlässigt haben, die Tatsache, dass, wenn Sie versuchen zu produzieren, die eine TabLayout, das erste, was zu tun ist, legen Sie tabMode 2 ('auto'). Dies kann getan werden, programmgesteuert oder per XML:
Die Dokumentation für die anderen beiden ('fixed' und 'Scrollbar') ist sehr spezifisch:
Beide haben tabs von gleicher Breite, auf der Basis der breitesten Registerkarte label.
( Siehe mode_fixed und mode_scrollable )
Trotz der genannten Lernkurve, meine Erfahrung mit ViewPager2 /TabLayoutMediator war ungemütlich: ich fand, dass die LayoutParams 'hack' nicht erfolgreich angewendet werden innerhalb der TabConfigurationStrategy() überschreiben.
Hier sind die wichtigsten Auszüge zur Erreichung der oben genannten Wirkung:
In Fragment.onCreateView():
Anderswo: