Erweiterte Symbolleiste mit benutzerdefinierter Ansicht, die nicht mit voller Breite angezeigt wird

8

Ich habe viele Antworten hier in Bezug auf Toolbar durchgegangen, aber keine der Antworten konnte mir helfen.

Was ich versuche zu erreichen, ist eine erweiterte Toolbar, die ein Logo, möglicherweise einen Namen der Activity / App, anzeigt, es wird eine Aktionsschaltfläche / Schublade auf der rechten Seite haben, die eine navigationsähnliche Darstellung zeigt Schublade auf der rechten Seite, ein Überlaufmenü mit anderen Optionen wie Einstellungen und auch eine Navigation Registerkarte am unteren Rand, die es dem Benutzer erlaubt, zwischen verschiedenen Fragmenten zu wechseln (verschiedene Tage in einem Monat).

Ich versuche dies über die Symbolleiste zu erreichen. Zuerst erstelle ich die Symbolleiste und füge meine benutzerdefinierte Ansicht hinzu.

%Vor%

day_navigation_tab ist nur ein horizontaler Bereich mit zwei Bildansichten mit einem Padding von 72dp (gemäß Richtlinien) und einer Textansicht mit einer Layout-Gewichtung von 1, die sich über den gesamten verfügbaren Platz erstreckt. Und eine Höhe von 72dp.

Jetzt in meinem BaseActivity XML schließe ich die Symbolleiste in das Framelayout des Hauptkontexts ein (sonst würde die Symbolleiste den gesamten Bildschirm aus einem unbekannten Grund für mich abdecken (brauchte Zeit, um das herauszufinden))

%Vor%

Wenn ich jedoch die Symbolleiste verwende, blende ich das Menü in der actionBar in onCreateOptionsMenu auf, meine benutzerdefinierte Ansicht wird verkleinert und erweitert nicht die Kante der erstellten Optionen. Ein Bild unten zeigt das besser. Es ist ein Screenshot aus einer Design-Ansicht in Android Studio. Ein gelbes Rechteck zeigt an, wo die Optionselemente platziert werden. Lila gibt die Originalgröße im DesignView an. Schwarz gibt die Größe an, wenn die App ausgeführt wird.

Danke für jede Hilfe.

Verwandte Fragen, die für jeden nützlich sein könnten, der auf dieses Problem stößt:

Joe Sovcik 24.03.2015, 17:32
quelle

3 Antworten

16

Um dies zu erreichen und vollständige Kontrolle über das Padding in der Symbolleiste zu haben, habe ich zwei Symbolleisten erstellt. Die erste Symbolleiste mit einer Standardhöhe von 56dp und die zweite mit einer Höhe von 72dp, die zusammen eine doppellagige Werkzeugleiste gemäß Materialdesign bilden.

Und weil ich keine Menüpunkte in der zweiten Werkzeugleiste aufblase, verhalten sich alle meine inneren Ansichten wie gewünscht.

Diese Zeilen müssen jedoch trotzdem verwendet werden

%Vor%

Das hat mein Problem gelöst, so dass ich nun zwei Symbolleisten in mein XMl einfüge.

    
Joe Sovcik 15.04.2015, 10:57
quelle
4

Seit Version 23 der Design-Support-Bibliotheken gibt es einen viel einfacheren Weg, dies mit android.support.design.widget.CoordinatorLayout

zu tun

Dies ist ein Beispiel:

%Vor%

    
Tom Brinkkemper 27.10.2015 21:19
quelle
1

Aus der Toolbar Dokumentation:

  

Eine oder mehrere benutzerdefinierte Ansichten Die Anwendung kann ein beliebiges Kind hinzufügen   Ansichten auf der Symbolleiste. Sie werden an dieser Stelle innerhalb der erscheinen   Layout. Wenn die Toolbar.LayoutParams einer untergeordneten Ansicht eine Gravitation angibt   Wert von CENTER_HORIZONTAL versucht die Ansicht in der Mitte zu zentrieren   verfügbarer Platz in der Werkzeugleiste nach allen anderen Elementen   wurde gemessen.

So wie es aussieht, verhält sich Ihre benutzerdefinierte Ansicht wie erwartet. Das Optionsmenü beansprucht in der Symbolleiste einen gewissen Platz. Daher misst die Symbolleiste den verbleibenden Platz für die benutzerdefinierte Ansicht.

    
Lady_ari 24.03.2015 22:37
quelle