2017-03-24 7 views
0

Ich füge Rückwärtskompatibilität für eine App hinzu und setTint wird auf einem Drawable verwendet, der von einem LayerDrawable abgerufen wird. Code ist unten.Nachfolgende Farben funktionieren nicht

Drawable background = layerDrawable.getDrawable(0); 
background = DrawableCompat.wrap(background); 
DrawableCompat.setTint(background.mutate(), color); 

Das funktioniert das erste mal aber wenn ich es dann nochmal versuche und danach ändere, ändert es sich nicht. Bitte beachten Sie, dies ist der Fall für Android SDK < 21. 21 und höher funktioniert.

Antwort

0

Nachdem ich die Dokumentation wie ein guter Junge für die DrawableCompat.wrap Methode gelesen hatte, erkannte ich, dass ich das "eingewickelte" Zeichen zurück in die LayerDrawable hinzufügen musste.

int id = layerDrawable.getId(0); 
Drawable background = layerDrawable.getDrawable(0); 
background = DrawableCompat.wrap(background); 
layerDrawable.setDrawableByLayerId(id,background); 

DrawableCompat.setTint(background.mutate(), color); 
Verwandte Themen