Ändern Sie die Füllfarbe von Vektoren, die in android-programmgesteuert
ich wan ' T Bearbeiten Sie die Füllfarbe aus einer Vektor-Datei im Android-programmgesteuert.
In der xml-Datei kann ich schreiben, dass meine Farbe, die mit dem attribut
android:fillColor aber ich wan ' T, um die Farbe zu ändern, die in meiner Laufzeit.
Irgendwelche Beispiele? Danke.
InformationsquelleAutor der Frage Sascha K. | 2015-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese ist genau das, was Sie brauchen. Credits @emmaguyder Autor der post. Ich habe gerade die volle Unterstützung von Support Library 23.4+die es ermöglicht, Sie zu stoppen pngs generieren zur Laufzeit:
Und wenn diese Zeile auf Ihre Aktivität des Benutzers oder der Anwendung onCreate:
Können Sie Ihre SVGs nicht nur mit
srcCompat
aber auch mit anderen Attributen wiedrawableLeft
background
usw. im TextView -, ToggleButton-und so weiter. Es funktioniert auch, wenn Selektoren.Hinweis: ich veränderte den code zu verwenden
VectorDrawableCompat.create
stattResourcesCompat.getDrawable
. Sonst würde es nicht funktionieren und werfenorg.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag vector
.Medium nach Inhalt:
Erstes erstellen wir die Attribute für die beiden Arten der spielerei, also können wir verändern Ihre Farben:
Dann, in der VectorDrawable, legen Sie die Teile, die wir wollen, um dynamisch zu ändern, um diese Attribute verwenden:
Erstellen von Designs und die Farben, die Sie verwenden möchten:
Verwenden Sie das drawable in einer Bildansicht:
Das ist es! Wenn Sie möchten, ändern Sie die Farben, einfach ein anderes Thema und Ihre drawable aktualisiert.
Siehe die GitHub - repo für eine vollständige Probe.
InformationsquelleAutor der Antwort saiyancoder
Wenn Sie möchten, ändern Sie die ganze Farbe, die Sie sich bewerben könnten, ein PorterduffColorFilter.
Aber dies funktioniert nicht für eine einzelne
<path>
. Nur für die ganze drawable.VectorDrawable erweitert die Klasse Drawable. Siehe Docs
InformationsquelleAutor der Antwort AlbAtNf
hinzufügen
setColorFilter()
Methode, um Ihre Bild-Inhalte-Vektor (Hinzugefügt in api-level 8):InformationsquelleAutor der Antwort user6757534