Ich habe mein SDK auf API 21 aktualisiert und jetzt ist das Sicherungs- / Sicherungssymbol ein schwarzer Pfeil, der nach links zeigt.
Ich möchte, dass es grau ist. Wie kann ich das machen?
Im Play Store ist der Pfeil beispielsweise weiß.
Ich habe dies getan, um einige Stile festzulegen. Ich habe @drawable/abc_ic_ab_back_mtrl_am_alpha
für verwendet homeAsUpIndicator
. Diese Zeichnung ist transparent (nur Alpha), aber der Pfeil wird schwarz angezeigt. Ich frage mich, ob ich die Farbe wie in der einstellen kann DrawerArrowStyle
. Oder wenn die einzige Lösung darin besteht, meine zu erstellen @drawable/grey_arrow
und für zu verwenden homeAsUpIndicator
.
<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<!-- ActionBar style -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/actionbar_text</item>
</style>
Meine bisherige Lösung bestand darin, das @drawable/abc_ic_ab_back_mtrl_am_alpha
, was weiß zu sein scheint, mit einem Bildbearbeitungsprogramm in der gewünschten Farbe zu malen. Es funktioniert, obwohl ich es vorziehen würde, @color/actionbar_text
wie in zu verwenden DrawerArrowStyle
.
quelle
homeAsUpIndicator
/@drawable/abc_ic_ab_back_mtrl_am_alpha
-Code erfolgreich verwendet , um den Zurückpfeil weiß zu machen. Ich bevorzuge dies als das Hacken in Java.Antworten:
Sie können es durch Code erreichen. Erhalten Sie den Zeichenpfeil zum Zeichnen, ändern Sie seine Farbe mit einem Filter und legen Sie ihn als Zurück-Schaltfläche fest.
Revision 1:
Ab API 23 (Marshmallow) wird die zeichnbare Ressource
abc_ic_ab_back_mtrl_am_alpha
in geändertabc_ic_ab_back_material
.BEARBEITEN:
Mit diesem Code können Sie die gewünschten Ergebnisse erzielen:
quelle
ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha)
weilgetResources.getDrawable(int)
veraltet istWenn Sie die Quelle
Toolbar
undTintManager
betrachten,drawable/abc_ic_ab_back_mtrl_am_alpha
wird sie mit dem Wert des Stilattributs getöntcolorControlNormal
.Ich habe versucht, dies in meinem Projekt (mit
<item name="colorControlNormal">@color/my_awesome_color</item>
in meinem Thema) festzulegen, aber es ist immer noch schwarz für mich.Update :
Fand es. Sie müssen das
actionBarTheme
Attribut ( nichtactionBarStyle
) mit festlegencolorControlNormal
.Z.B:
quelle
colorControlNormal
auf das Stammthema und nicht auf dasactionBarTheme
der Weg.Versuchte alle Vorschläge oben. Die einzige Möglichkeit, die Farbe des Standardpfeils der Zurück-Schaltfläche des Navigationssymbols in meiner Symbolleiste zu ändern, besteht darin, colorControlNormal in einem Basisthema wie diesem festzulegen. Wahrscheinlich aufgrund der Tatsache, dass das übergeordnete Element Theme.AppCompat.Light.NoActionBar verwendet
quelle
style.xml
colorControlNormal
ist nicht mit dem Präfixandroid:
.Sie müssen Ihrem Symbolleisten-Design ein einzelnes Attribut hinzufügen -
Wenden Sie dieses toolbar_theme auf Ihre Symbolleiste an.
ODER
Sie können sich direkt auf Ihr Thema bewerben -
quelle
Einfach hinzufügen
zu Ihrem aktuellen App-Thema.
quelle
Wenn Sie es verwenden
Toolbar
, können Sie dies versuchenquelle
Wie in den meisten vorherigen Kommentaren erwähnt, besteht die Lösung darin, hinzuzufügen
<item name="colorControlNormal">@color/white</item>
zu Ihrem App-Thema. Stellen Sie jedoch sicher, dass in Ihrem Symbolleistenelement in Ihrem Layout kein anderes Thema definiert ist.quelle
Die Antwort von Carles ist die richtige Antwort, aber einige der Methoden wie getDrawable (), getColor () waren zum Zeitpunkt des Schreibens dieser Antwort veraltet . Die aktualisierte Antwort wäre also
Nach einigen anderen Stackoverflow-Abfragen stellte ich fest, dass das Aufrufen von ContextCompat.getDrawable () ähnlich ist
Und ContextCompat.getColor () ähnelt
Link 1: ContextCompat.getDrawable ()
Link 2: ContextCompat.getColor ()
quelle
abc_ic_ab_back_material
statt seinabc_ic_ab_back_mtrl_am_alpha
.Ich habe eine Lösung gefunden, die vor Lollipop funktioniert. Stellen Sie "colorControlNormal" in "actionBarWidgetTheme" ein, um die Farbe homeAsUpIndicator zu ändern. Ändern Sie die Antwort von rockgecko von oben so:
quelle
Auf compileSdkVersoin 25 können Sie Folgendes tun:
styles.xml
quelle
Verwenden Sie die folgende Methode:
Jetzt können Sie das Drawable einstellen mit:
quelle
Ändern Sie die Farbe des Navigationssymbols
In style.xml:
quelle
Eine andere Lösung, die für Sie möglicherweise funktioniert, besteht darin, Ihre Symbolleiste nicht als Aktionsleiste der App (von
setActionBar
odersetSupportActionBar
) zu deklarieren und das Zurück-Symbol in Ihrem onActivityCreated mithilfe des in einer anderen Antwort auf dieser Seite genannten Codes festzulegenJetzt erhalten Sie keinen
onOptionItemSelected
Rückruf mehr, wenn Sie die Zurück-Taste drücken. Sie können sich jedoch dafür mit registrierensetNavigationOnClickListener
. Das ist was ich mache:Ich bin nicht sicher, ob es funktionieren wird, wenn Sie mit Menüelementen arbeiten.
quelle
Wir hatten das gleiche Problem und wollten nur das einstellen
App: CollapseIcon
Attribut in der Symbolleiste am Ende, das wir nicht gefunden haben, da es nicht sehr gut dokumentiert ist :)
quelle
Versuche dies
Funktionsaufruf:
quelle
Das hat bei mir funktioniert:
Fügen Sie Ihrem Thema die folgenden Attribute hinzu.
So ändern Sie den Zurückpfeil der Symbolleiste / Aktionsleiste über API 21
So ändern Sie den Zurückpfeil der Symbolleiste / Aktionsleiste unter API 21
So ändern Sie den Aktionsmodus Zurück Pfeil
So entfernen Sie den Schatten der Symbolleiste / Aktionsleiste
Zum Ändern des Aktionsleistenüberlaufs kann gezeichnet werden
Hinweis: 'srcCompat' wird anstelle von 'android: src' verwendet, da APIs unter 21 von Vektoren gezeichnet werden können
quelle
Ich habe gerade das Symbolleisten-Design in @ style / ThemeOverlay.AppCompat.Light geändert
und der Pfeil wurde dunkelgrau
quelle
So habe ich es in Material Components gemacht:
quelle
Die Lösung ist sehr einfach
Fügen Sie einfach die folgende Zeile in Ihren Stil mit dem Namen AppTheme ein
Jetzt sieht Ihr gesamter XML-Code wie unten gezeigt aus (Standardstil).
quelle
Sie können die Farbe des Navigationssymbols programmgesteuert folgendermaßen ändern:
quelle
Entfernen Sie einfach
android:homeAsUpIndicator
undhomeAsUpIndicator
aus Ihrem Thema und es wird in Ordnung sein. Dascolor
Attribut in IhremDrawerArrowStyle
Stil muss ausreichen.quelle
color
Attribut betroffen ). Der Schubladenpfeil ist etwas größer.Es sei denn, es gibt eine bessere Lösung ...
Was ich getan habe, ist, die
@drawable/abc_ic_ab_back_mtrl_am_alpha
Bilder, die weiß zu sein scheinen, mit einem Bildbearbeitungsprogramm in der gewünschten Farbe zu malen.quelle