Android - Wie füge ich den Badge-Zähler zum Hamburger-Navigationsmenü hinzu?

8

Meine Frage ist die gleiche wie Frage (das ist nicht ein Duplikat von diese Frage ).

Die Antwort auf diese Frage funktioniert für mich nicht, anstatt das Standard-Hamburger-Symbol auf left des Titels der Aktivität, es fügt nur ein zusätzliches Hamburger-Symbol zum rechts des Titels meiner Aktivität hinzu. p>

Wie bekomme ich das eigentlich?

Ich habe den ganzen Tag damit herumgestochert, aber habe nichts erreicht.

Ich sehe, dass Toolbar eine setNavigationIcon(Drawable drawable) Methode hat. Idealerweise würde ich layout (das das Hamburger-Icon und die Badge-Ansicht enthält) anstelle von Drawable verwenden, aber ich bin mir nicht sicher, ob / wie dies erreichbar ist - oder ob es einen besseren Weg gibt?

Hinweis: Hierbei handelt es sich nicht darum, wie Sie die Badge-Ansicht erstellen können. Ich habe das bereits erstellt und habe es auf den Navigationsmenüpunkten selbst implementiert. Daher muss ich jetzt nur noch eine ähnliche Badge-Ansicht zum Standard-Hamburger-Icon hinzufügen.

    
ban-geoengineering 09.05.2017, 23:01
quelle

1 Antwort

22

Seit Version 24.2.0 der Support-Bibliothek bietet die v7-Version von ActionBarDrawerToggle die Methode setDrawerArrowDrawable() an, um das Umschalt-Symbol anzupassen. DrawerArrowDrawable ist die Klasse, die dieses Standardsymbol bereitstellt, und es kann unterkonsolidiert werden, um es nach Bedarf zu ändern.

Als Beispiel überschreibt die Klasse BadgeDrawerArrowDrawable die Methode draw() , um ein einfaches rot-weißes Abzeichen hinzuzufügen, nachdem sich die Superklasse selbst gezeichnet hat. Dadurch kann die Hamburger-Pfeil-Animation darunter bewahrt werden.

%Vor%

Eine Instanz davon kann jederzeit nach der Instanziierung auf den Schalter gesetzt werden, und die Eigenschaften des Badge werden nach Bedarf direkt auf das Zeichenfeld gesetzt.

Wie im unten stehenden OP angegeben, sollte die für die benutzerdefinierte Context verwendete DrawerArrowDrawable mit ActionBar#getThemedContext() oder Toolbar#getContext() ermittelt werden, um sicherzustellen, dass die korrekten Stilwerte verwendet werden. Zum Beispiel:

%Vor%

Um die Dinge ein wenig zu vereinfachen, ist es möglicherweise vorzuziehen, auch ActionBarDrawerToggle abzuleiten und alles über die Toggle-Instanz zu behandeln.

%Vor%

Damit wird das benutzerdefinierte Ausweisprofil automatisch festgelegt, und alle Toggle-bezogenen Funktionen können über ein einzelnes Objekt verwaltet werden.

BadgeDrawerToggle ist ein Ersatz für ActionBarDrawerToggle und seine Konstruktoren sind genau gleich.

%Vor%     
Mike M. 10.05.2017, 07:30
quelle