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

3voto

Falls Sie den Selektor für Ihre Tönung festlegen möchten:

ImageViewCompat.setImageTintList(iv, getResources().getColorStateList(R.color.app_icon_click_color));

3voto

HunkD Punkte 76

Wie @milosmns sagte, sollten Sie verwenden imageView.setColorFilter(getResources().getColor(R.color.blue),android.graphics.PorterDuff.Mode.MULTIPLY);

Diese API benötigt einen Farbwert anstelle einer Farb-Ressourcen-ID. Das ist der eigentliche Grund, warum Ihr Statement nicht funktioniert hat.

2voto

Hesam Punkte 49242

Ich bin spät zur Party gekommen, aber ich habe meine Lösung oben nicht gesehen. Wir können die Farbe auch über setImageResource() festlegen (mein minSdkVersion ist 24).

Also musst du zuerst einen Selektor erstellen und ihn im /drawable Asset-Ordner speichern (ich nenne ihn ic_color_white_green_search.xml)

Dann setze es im Code wie folgt:

val icon = itemView.findViewById(R.id.icon) as ImageButton
icon.setImageResource(R.drawable.ic_color_white_green_search)

2voto

Anorov Hasan Punkte 123

Für mich funktioniert dieser Code. Ich benutze ihn mit Karten- und Bildansichten, aber ich denke, er funktioniert in jeder Ansicht, um ihre Farben zu ändern. cardBookmark ist meine Kartenansicht.

var cardDrawable: Drawable = binding.cardBookmark.background
cardDrawable = DrawableCompat.wrap(cardDrawable)
DrawableCompat.setTint(cardDrawable, resources.getColor(R.color.shuffleColor))
binding.cardBookmark.background = cardDrawable

2voto

WilliamVietnam Punkte 47

Ich habe unten gemacht:

view.drawable.setTint(ContextCompat.getColor(requireContext(),R.color.color_05F73F))

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