android - ImageView 删除色调颜色?
问题描述
在我决定问它之前,我搜索了一些Remove Tint Color Programmatically,但它被标记为重复,所以我不知道这是否也是重复的?因为它没有回答我的问题,我想。
因为我也在问是否可以在更改.ImageView
drawable
这是正常的图片
这是选择的图像
这是取消选择图像后的正常图像
这是我的代码。
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
但图像什么也不做,变成了最后一张图像。
我正在使用Material Design Icon。
drawable
正如您在第一张图片中看到的那样,我想让图像恢复正常。
谢谢你。
解决方案
选定的可绘制对象与其他 2 个完全不同的可绘制对象。您不能将其着色baseline_favorite_border_24
为看起来像选定的可绘制对象,您只能对边框进行着色,而不能用颜色填充它。顺便imageTintList
要求API 21+
。
所以使用2个drawables(你不需要下载它们,它们存在于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))
}
推荐阅读
- python - 如何在python中添加列表的总和
- sql-server - sql server 如何分隔全名
- postgresql - Docker - Postgres 和 pgAdmin 4:连接被拒绝
- data-structures - 可以仅使用哈希表来实现队列吗?
- jquery - 将类添加到“li”,其中包含“a”的href
- spring - 如何使用 spring-cloud-contracts 的存根启动一个独立的wiremock?
- php - php - 如何将变量增加 100
- reactjs - 使用 call([context, fnName], ...args) 时的流类型警报 redux-saga
- javascript - ES6 自定义元素继承
- java - 从对象的对象创建 Json 对象模板