【问题标题】:ImageView remove tint color?ImageView 删除色调颜色?
【发布时间】:2018-07-17 00:56:03
【问题描述】:

在我决定问之前,我搜索了一些Remove Tint Color Programmatically,但它被标记为重复,所以我不知道这是否也是重复的?因为它没有回答我的问题,我想。

因为我还问是否可以在更改drawableRESETREMOVE 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,但图像什么也不做,变成了最后一张图像。

我正在使用Material Design Icon

我想让图像恢复正常drawable,正如您在第一张图片中看到的那样。

谢谢。

【问题讨论】:

  • 我试了代码,imgHeart.setImageDrawable 完全清除了色调后调用了imgHeart.imageTintList = null,我认为其他地方肯定有问题。
  • 您需要全部 3 个图标,还是只需要最后 2 个?

标签: android kotlin imageview tint


【解决方案1】:

选定的drawable与其他2个完全不同的drawable。您不能将baseline_favorite_border_24着色为看起来像选定的那样,您只能着色边框并且不能用颜色填充它。顺便说一下imageTintList 需要API 21+
所以使用2个drawable(你不需要下载它们,它们存在于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))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多