Ändern Sie die Füllfarbe eines Vektors in android programmgesteuert
Möchte ich Bearbeiten Sie die Füllfarbe einer Vektor-Datei im Android-programmgesteuert.
In der xml-Datei kann ich meine Farbe mit dem Attribut
android:fillColor aber ich möchte die Farbe ändern, die in der Laufzeit.
Beispiele für, die? Danke.
- Hi.. hast du die Lösung??.. als ich bin mit dem gleichen Problem..
- Sie können die Farbe ändern, die aus dem Vektor-file in XML mit android:Farbton, in der runtime mit setColorFilter
- stackoverflow.com/a/47174073/1352919
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese ist genau das, was Sie brauchen. Credits @emmaguy, der 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.
?attr/colorPrimary
auf diefillColor
Attribut...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
<path>
hinzufügen
setColorFilter()
Methode, um Ihre Bild-Inhalte-Vektor (Hinzugefügt in api-level 8) wie folgt: