So läuft mir ein seltsames Problem ... Ich habe einen Code erstellt, um eine Drawable zu färben, und es funktioniert auf allen Android-Versionen für Vector Assets, aber nicht für reguläre PNG Vermögenswerte. Der Code ist unten:Drawable Tönungscode funktioniert für Vektoren, aber nicht PNGs
public class TintHelper {
private Context mContext;
public TintHelper(Context context) {
mContext = context;
}
public Drawable getTintedDrawableFromResource(int resourceID, ColorStateList colorStateList) {
Drawable original = AppCompatDrawableManager.get().getDrawable(mContext, resourceID);
return performTintOnDrawable(original, colorStateList);
}
private Drawable performTintOnDrawable(Drawable drawable, ColorStateList colorStateList) {
Drawable tinted = DrawableCompat.wrap(drawable);
DrawableCompat.setTintList(tinted, colorStateList);
return tinted;
}
}
Wenn ich die Ressourcen-ID eines Vektors Asset angeben, funktioniert der Code perfekt und das Bild getönt ist, wenn sie gedrückt, aber wenn ich eine regelmäßige PNG verwenden, gibt es keine Anwendung Tönung, wenn die Das Symbol ist gedrückt. Wenn jemand Ideen dafür hat, warum dies nicht funktioniert, veröffentlichen Sie eine alternative Methode, die möglicherweise beide Asset-Typen unterstützt.
Vielen Dank im Voraus!
Welche Version von 'appcompat-v7' /' support-v4' verwenden Sie? das Neueste? 24.2.0? – pskink
@pskink 24.2.1. Siehe meine Antwort unten für die Lösung. – privatestaticint
es funktioniert nur mit 24.2.0, ich (doppelt) überprüft, dass keine Notwendigkeit für eine benutzerdefinierte Ansicht – pskink