Müssen für ein ImageView einen Farbton einstellen... Ich benutze es auf folgende Weise:
imageView.setColorFilter(R.color.blue, android.graphics.PorterDuff.Mode.MULTIPLY);
Aber es ändert sich nicht...
Müssen für ein ImageView einen Farbton einstellen... Ich benutze es auf folgende Weise:
imageView.setColorFilter(R.color.blue, android.graphics.PorterDuff.Mode.MULTIPLY);
Aber es ändert sich nicht...
Versuchen Sie dies. Es sollte auf allen Android-Versionen funktionieren, die von der Support-Bibliothek unterstützt werden:
public static Drawable getTintedDrawableOfColorResId(@NonNull Context context, @NonNull Bitmap inputBitmap, @ColorRes int colorResId) {
return getTintedDrawable(context, new BitmapDrawable(context.getResources(), inputBitmap), ContextCompat.getColor(context, colorResId));
}
public static Drawable getTintedDrawable(@NonNull Context context, @NonNull Bitmap inputBitmap, @ColorInt int color) {
return getTintedDrawable(context, new BitmapDrawable(context.getResources(), inputBitmap), color);
}
public static Drawable getTintedDrawable(@NonNull Context context, @NonNull Drawable inputDrawable, @ColorInt int color) {
Drawable wrapDrawable = DrawableCompat.wrap(inputDrawable);
DrawableCompat.setTint(wrapDrawable, color);
DrawableCompat.setTintMode(wrapDrawable, PorterDuff.Mode.SRC_IN);
return wrapDrawable;
}
Sie können eine beliebige der oben genannten Methoden verwenden, um es zum Laufen zu bringen.
Weitere interessante Funktionen von DrawableCompat finden Sie in der Dokumentation unter hier.
Um die Farbe eines ImageView programmgesteuert in Android festzulegen
Ich habe zwei Methoden für Android:
1)
imgView.setColorFilter(context.getResources().getColor(R.color.blue));
2)
DrawableCompat.setTint(imgView.getDrawable(),
ContextCompat.getColor(context, R.color.blue));
Ich hoffe, ich konnte jemandem helfen :-)
Da die erste Antwort für mich nicht funktioniert hat:
// Holen Sie sich das ImageView
ImageView myImageView = (ImageView) findViewById(R.id.iv);
// colorid ist die ID einer Farbe, die in values/colors.xml definiert ist
myImageView.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.colorid)));
Dies scheint nur bei API 21+ zu funktionieren, aber für mich war das kein Problem. Sie können ein ImageViewCompat verwenden, um dieses Problem zu lösen.
Ich hoffe, ich konnte jemandem helfen :-)
Eine Erweiterungs Funktion in Kotlin, um die Einfärbung zu setzen und aufzuheben.
fun ImageView.setTint(@ColorRes color: Int?) {
if (color == null) {
ImageViewCompat.setImageTintList(this, null)
} else {
ImageViewCompat.setImageTintList(this, ColorStateList.valueOf(ContextCompat.getColor(context, color)))
}}
Verwendung: deinImageView.setTint(R.color.white)
zum Setzen und zum Entfernen einfach: deinImageView.setTint(null)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.