繁体   English   中英

ImageView删除色调颜色?

[英]ImageView remove tint color?

在决定提出此要求之前,我以编程方式搜索了一些“ 删除色调颜色” ,但是将其标记为重复 ,所以我不知道这是否也是重复色吗? 我想是因为它没有回答我的问题。

因为我也在询问更改drawable后是否可以重置删除 ImageView的色调。

这是正常的图像

在此处输入图片说明

这是选定的图像

在此处输入图片说明

并且这是取消选择图像后的正常图像

在此处输入图片说明

这是我的代码。

if (isSelected) {
    // Reset the ImageView to normal
    isSelected = false
    imgHeart.setImageDrawable(itemView.context.getDrawable(R.drawable.baseline_favorite_border_24))
} else {
    // Tint ImageView to Red
    isSelected = true
    imgHeart.setImageDrawable(itemView.context.getDrawable(R.drawable.baseline_favorite_24))
    imgHeart.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(itemView.context, R.color.colorRedHeart))
}

我也尝试imgHeart.imageTintList = null但是图像变成白色或消失。 我也尝试了imgHeart.colorFilter = null但是图像什么也不做,变成了最后一张图像。

我正在使用“ 材料设计”图标

正如您在第一张图片中所看到的,我想将图片恢复为普通drawable

谢谢。

所选的可绘制对象是与其他2完全不同的可绘制对象。您不能将baseline_favorite_border_24着色为所选对象,只能着色边框,并且不能用颜色填充它。 通过imageTintList需要API 21+的方式。
因此,请使用2个可绘制对象(您无需下载它们,它们存在于Android Studio中),将所选的一个命名为baseline_favorite_filled_24然后在它们之间切换。

if (isSelected) {
    isSelected = false
    imgHeart.setImageDrawable(itemView.context.getDrawable(R.drawable.baseline_favorite_border_24))
} else {
    isSelected = true
    imgHeart.setImageDrawable(itemView.context.getDrawable(R.drawable.baseline_favorite_filled_24))
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM