594 Stimmen

Wie kann man die Tönung für ein Bildansicht programmatisch in Android festlegen?

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...

25voto

Sai Punkte 14099

Wenn Ihre Farbe eine hexadezimale Transparenz hat, verwenden Sie den folgenden Code.

ImageViewCompat.setImageTintMode(imageView, PorterDuff.Mode.SRC_ATOP);
ImageViewCompat.setImageTintList(imageView, ColorStateList.valueOf(Color.parseColor("#80000000")));

Um die Tönung aufzuheben

ImageViewCompat.setImageTintList(imageView, null);

25voto

Catluc Punkte 1674

Nachdem ich alle Methoden ausprobiert habe und sie nicht für mich funktioniert haben.

Ich habe die Lösung gefunden, indem ich einen anderen PortDuff.MODE verwendet habe.

imgEstadoBillete.setColorFilter(context.getResources().getColor(R.color.green),PorterDuff.Mode.SRC_IN);

17voto

Gautam Surani Punkte 1119

Einfach und eine Zeile

imageView.setColorFilter(activity.getResources().getColor(R.color.your_color));

16voto

Tad Punkte 4320

Ab Lollipop gibt es auch eine Tönungs-Methode für BitmapDrawables, die mit der neuen Palette-Klasse funktioniert:

public void setTintList (ColorStateList Farbe)

und

public void setTintMode (PorterDuff.Mode Farbmodus)

Auf älteren Versionen von Android können Sie jetzt die DrawableCompat-Bibliothek verwenden

14voto

android developer Punkte 111449

Kotlin-Lösung mit Hilfe einer Erweiterungsfunktion, um die Tönung festzulegen und aufzuheben :

fun ImageView.setTint(@ColorInt color: Int?) {
    if (color == null) {
        ImageViewCompat.setImageTintList(this, null)
        return
    }
    ImageViewCompat.setImageTintMode(this, PorterDuff.Mode.SRC_ATOP)
    ImageViewCompat.setImageTintList(this, ColorStateList.valueOf(color))
}

CodeJaeger.com

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.

Powered by:

X