colorControlHighlight wird für den Hintergrund von aktivierten Elementen verwendet.
Ich muss anpassen:
Hintergrund ungeprüft
Textfarbe überprüft
Textfarbe deaktiviert
umkehren
itemBackground, itemIconTint und itemTextColor sind einfache XML-Attribute, die gesetzt werden können, obwohl Sie ein benutzerdefiniertes Präfix anstelle von verwenden müssen android: eins.
Notiz: In diesem Fall sind Textfarbe, Symbolfarbe und Hintergrund statisch. Wenn Sie die Farbe des Textes ändern möchten (z. B. rosa, wenn nicht aktiviert, und blaugrün, wenn aktiviert), sollten Sie a verwenden ColorStateList.
Beispiel
Erstellen Sie eine neue *.xml-Datei in /res/color – Nennen wir es state_list.xml – mit folgendem Inhalt:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is used when the Navigation Item is checked -->
<item android:color="#009688" android:state_checked="true" />
<!-- This is the default text color -->
<item android:color="#E91E63" />
</selector>
und dann einfach so darauf verweisen: app:itemTextColor="@color/state_list"
Das gleiche gilt für itemIconTint. itemBackground erwartet eine Ressourcen-ID. Siehe die Dokumente sowie.
Verwenden Sie für den Elementhintergrund in einem markierten Element einfach #123456
– Xan
2. Juni 15 um 11:39 Uhr
Das stimmt, aber dies könnte auch die Farbe anderer Ansichten ändern EditText zumindest wenn du es in deinem globalen Theme definierst.
– umkehren
2. Juni 15 um 14:08 Uhr
Wer Probleme beim Einstellen hat app:itemBackground="@drawable/my_ripple"? Es passiert mir, dass, wenn ich auf ein Element drücke, das Element ganz unten den Welleneffekt widerspiegelt, anstatt das Element, auf das ich tatsächlich drücke.
– Javier Mendonca
10. Juni 15 um 13:25 Uhr
@JavierMendonca Ich habe dasselbe erlebt, aber ich kenne keine Lösung für diesen Geldautomaten – höchstwahrscheinlich ist dies ein Fehler, aber vielleicht lohnt es sich, eine separate Frage für dieses spezielle Problem zu stellen.
– umkehren
10. Juni 15 um 13:30 Uhr
Denken Sie daran, dass Sie es für Pressed to Work von android:state_checked auf android:state_pressed ändern müssen.
– Programmist
5. Juli 15 um 13:08 Uhr
Maciej Sikora
Navigationsschublade(NavigationView) hat drei Optionen für die Konfiguration von aktivierten/ausgewählten Elementen.
app:itemIconTint="@color/menu_text_color" //icon color
app:itemTextColor="@color/menu_text_color" //text color
app:itemBackground="@drawable/menu_background_color" //background
@color/colorWhite – Farbressource, die für das markierte Element verwendet wird
@color/colorBlack – Farbressource, die für ungeprüfte Elemente verwendet wird
Ich habe eine Ressource für beide erstellt, aber es ist möglich, zwei getrennte Dateien zu erstellen – eine für Text, eine für das Symbol.
Hintergrund (itemBackground)
Die Hintergrundoption benötigt eine darstellbare Ressource anstelle von Farbe, jeder Versuch, eine Farbe festzulegen, wird durch eine Ausnahme beendet. Darstellbare Ressourcen müssen in erstellt werden res/ziehbar und sein Inhalt sollte ähnlich aussehen wie:
Es ist nicht erforderlich, Drawables zu erstellen, die Farben simulieren (in anderen Lösungen habe ich solche Vorschläge gesehen – vielleicht für ältere SDK-Versionen), Farben können direkt in dieser Datei verwendet werden. In dieser Beispieldatei verwende ich transparente Farbe für nicht markierte Elemente und colorPrimary für geprüfte Artikel.
Fehlerbehebung und wichtige Hinweise
Im Hintergrund Ressource immer verwenden state_checked=”false” statt Standard, mit Standardfarbe wird es nicht funktionieren
Für dynamische/programmgesteuert erstellte Menüs Denken Sie daran, Elemente als überprüfbar festzulegen:
Wenn Elemente nicht als überprüfbar festgelegt werden, funktioniert der Hintergrund nicht (Überraschende Text- und Symbolfarbe funktionieren wie erwartet).
gute Antwort, aber ich bevorzuge es, ein Thema für die Navigationsansicht zu erstellen. welches attr muss ich überschreiben?
– Xan
28. Dezember 16 um 21:12 Uhr
@MaciejSikora Du rettest mein Leben! Ich liebe euch Männer! Heirate mich 🙂
– Krzysztof
22. Februar 18 um 17:14 Uhr
Das ist das Wichtigste, sonst geht nichts. remember to set items as checkable. Danke, dass Sie das erwähnt haben, was niemand getan hat.
Nur ein Schlussbemerkung. Achten Sie bei der Verwendung auf die itemBackground.
Es ist eingestellt @null um einen geformten Hintergrund zu verwenden, der programmgesteuert von erzeugt wird NavigationView Wenn itemShapeAppearance und/oder itemShapeAppearanceOverlay ist eingestellt (Standardverhalten). Dieser Hintergrund wird mit dem gestaltet itemShape* Attribute.
Einstellung itemBackground überschreibt den programmatischen Hintergrund und bewirkt, dass die in den itemShape*-Attributen festgelegten Werte ignoriert werden.
Die Verwendung von colorControlHighlight ist für mich eine gute Lösung. Beachten Sie, dass Sie mit der neuesten Support-Bibliothek für jedes Widget ein Thema (nicht nur den Stil) definieren können. Beispielsweise können Sie das colorControlHighlight im Design NavigationView definieren und dies wird nicht auf die restlichen Widgets angewendet.
Jhon
Wenn Sie nur die Farbe eines Menüelements von Ihrer Aktivität basierend auf Ereignissen ändern möchten, lesen Sie diesen Blog von HANIHASHEMI:
Auf diese Weise können Sie Ihr eigenes Layout mit TextView erstellen und ändern backgrounds/colors/fonts wie auch immer du willst. Hoffe das war hilfreich 🙂 Quelle
.
7031700cookie-checkWie kann ich den Hintergrund und die Textfarbe von Artikeln in NavigationView anpassen?yes