需要为图像视图设置色调…我使用它的方式如下:
imageView.setColorFilter(R.color.blue,android.graphics.PorterDuff.Mode.MULTIPLY);
但这并没有改变……
需要为图像视图设置色调…我使用它的方式如下:
imageView.setColorFilter(R.color.blue,android.graphics.PorterDuff.Mode.MULTIPLY);
但这并没有改变……
当前回答
如果你想将选择器设置为你的色调:
ImageViewCompat.setImageTintList(iv, getResources().getColorStateList(R.color.app_icon_click_color));
其他回答
如果你的颜色有十六进制透明度,使用下面的代码。
ImageViewCompat.setImageTintMode(imageView, PorterDuff.Mode.SRC_ATOP);
ImageViewCompat.setImageTintList(imageView, ColorStateList.valueOf(Color.parseColor("#80000000")));
清除色彩
ImageViewCompat.setImageTintList(imageView, null);
对我来说,这个代码是有效的。我使用它与卡片和图像视图,但我认为它可以在任何视图改变他们的色调颜色。 cardBookmark是我的cardView。
var cardDrawable: Drawable = binding.cardBookmark.background
cardDrawable = DrawableCompat.wrap(cardDrawable)
DrawableCompat.setTint(cardDrawable, resources.getColor(R.color.shuffleColor))
binding.cardBookmark.background = cardDrawable
这对我很有效
mImageView.setColorFilter(ContextCompat.getColor(getContext(), R.color.green_500));
kotlin中的一个扩展函数,用于设置和取消设置着色。
fun ImageView.setTint(@ColorRes color: Int?) {
if (color == null) {
ImageViewCompat.setImageTintList(this, null)
} else {
ImageViewCompat.setImageTintList(this, ColorStateList.valueOf(ContextCompat.getColor(context, color)))
}}
用法:yourImageView.setTint(R.color.white)用于设置和删除:
大多数答案指的是使用setColorFilter,这不是最初的问题。
用户@Tad的答案是正确的,但它只适用于API 21+。
要设置所有Android版本的色调,使用ImageViewCompat:
ImageViewCompat.setImageTintList(imageView, ColorStateList.valueOf(yourTint));
注意,在这种情况下,yourTint必须是一个“颜色int”。如果你有一个像r。color这样的颜色资源。蓝色,你需要先加载颜色int:
ContextCompat.getColor(context, R.color.blue);