Ich versuche, die Farbe eines weißen Markierungsbildes per Code zu ändern. Ich habe gelesen, dass der folgende Code die Farbe ändern sollte, aber mein Marker bleibt weiß.
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )
Habe ich etwas verpasst? Gibt es eine andere Möglichkeit, die Farben meiner Zeichen in meinem res-Ordner zu ändern?
Antworten:
Versuche dies:
Die Verwendung
DrawableCompat
ist wichtig, da sie Abwärtskompatibilität und Fehlerbehebungen auf API 22-Geräten und früheren Versionen bietet.quelle
OverlayItems
Klasse zu tun haben, die das Problem verursachen könnte? Es ist ein reguläres Drawable aus meinem Res-Ordner, nichts Besonderes ...Sie können dies für svg vector drawable versuchen
quelle
null
zuDrawable#setTintList(ColorStateList)
Möglicherweise müssen Sie mutate () auf dem Drawable aufrufen, da sonst alle Symbole betroffen sind.
quelle
Eine andere Möglichkeit, dies auf Lollipop, Android 5. +, zu tun, besteht darin, einen Farbton auf einer Bitmap festzulegen, die wie folgt gezeichnet werden kann:
Dies funktioniert für Sie, wenn Sie eine begrenzte Anzahl von Farben haben, die Sie für Ihre Zeichen verwenden möchten. Weitere Informationen finden Sie in meinem Blogbeitrag .
quelle
minSdkVersion 16
und Android 4.1.1 Gerät.)android:background="..."
. Ziemlich seltsam!Sie können dies für versuchen
ImageView
. mitsetColorFilter()
.quelle
Ich habe eine generische Funktion geschrieben, in der Sie den Kontext übergeben können. Das Symbol ist id drawable / mipmap image icon und die neue Farbe, die Sie für dieses Symbol benötigen.
Diese Funktion gibt ein Drawable zurück.
quelle
Sie können einen ColorMatrixColorFilter ausprobieren, da Ihre Schlüsselfarbe Weiß ist:
quelle
Das hat bei mir funktioniert. Stellen Sie sicher, dass "ff" zwischen 0x und Farbcode steht. So 0xff2196F3
quelle
Entspricht der akzeptierten Antwort, bietet jedoch eine einfachere Methode:
Beachten Sie, dass der Code hier Kotlin ist.
quelle
Vielleicht möchten Sie es versuchen
Mode.LIGHTEN
oderMode.DARKEN
. Die Android Javadocs sind schrecklich darin zu erklären, was die PorterDuff-Modi tun. Sie können sie hier ansehen : PorterDuff | AndroidIch schlage vor, sich hier auf Mozillas Website nach Compositing umzusehen . (Sie haben nicht alle Modi, die Android macht, aber sie haben viele von ihnen)
quelle
Verwenden Sie dies: Für Java
für Kotlin
Sie können PorterDuff.Mode.SRC_ATOP verwenden, wenn Ihr Hintergrund abgerundete Ecken usw. hat.
quelle
Syntax
Beispiel
quelle
Das habe ich getan:
quelle
Einfach benutzen
in Ihrer XML-Datei. Ersetzen Sie primary_color durch eine benutzerdefinierte Farbe
quelle
Methode wie folgt erstellen:
und benutze es so:
quelle
Der einfachste Weg, dies zu tun:
oder
a, r, g, b: Farbargb-Werte.
quelle
Für diejenigen, die Kotlin verwenden, eine einfache Erweiterungsfunktion:
und dann einfach machen
quelle