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...
Zur Ergänzung von ADev's Antwort (die meiner Meinung nach die korrekteste ist), aufgrund der weit verbreiteten Verwendung von Kotlin und seinen nützlichen Erweiterungsfunktionen:
fun ImageView.setTint(context: Context, @ColorRes colorId: Int) {
val color = ContextCompat.getColor(context, colorId)
val colorStateList = ColorStateList.valueOf(color)
ImageViewCompat.setImageTintList(this, colorStateList)
}
Ich denke, dass diese Funktion in jedem Android-Projekt nützlich sein könnte!
Anfangend in Lollipop gibt es eine Methode namens ImageView#setImageTintList()
, die Sie verwenden können... der Vorteil dabei ist, dass sie eine ColorStateList
verwendet, anstatt nur eine einzige Farbe, wodurch der Tönungszustand des Bildes zustandsbewusst wird.
Auf Geräten vor Lollipop können Sie dasselbe Verhalten erzielen, indem Sie das Drawable einfärben und es dann als Bild-Drawable des ImageView
setzen:
ColorStateList csl = AppCompatResources.getColorStateList(context, R.color.my_clr_selector);
Drawable drawable = DrawableCompat.wrap(imageView.getDrawable());
DrawableCompat.setTintList(drawable, csl);
imageView.setImageDrawable(drawable);
Random random = new Random;
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
ColorFilter cf = new PorterDuffColorFilter(Color.rgb(random.nextInt(255), random.nextInt(255), random.nextInt(255)), Mode.OVERLAY);
imageView.setImageResource(R.drawable.ic_bg_box);
imageView.setColorFilter(cf);
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.