【发布时间】:2020-11-18 22:08:00
【问题描述】:
我有两个ImageView(上、下),我想根据某些操作更新颜色。有三种不同的情况:
up red, down black
up black, down red
up green, down green
我有三个函数可以相应地更改在正确位置执行的颜色(我有一个 TextView 可以打印出当前调用的内容,结果符合预期),但我发现它们通常不起作用正确 - 因为它们只为一个 ImageView 着色。正如我在上面所写的,这是三种可能的情况——但是有时一个图像视图是绿色的,另一个是红色的,或者两个图像视图都是红色的,或者尽管在 up green, down green 情况下只有一个图像视图是绿色的——这不应该发生。以下是函数:
/** 17170452 = green
* 17170444 = black
* 17170455 = red
*/
@SuppressLint("ResourceType")
override fun colorTuned() {
DrawableCompat.setTint(down.drawable, ContextCompat.getColor(applicationContext, 17170452))
DrawableCompat.setTint(up.drawable, ContextCompat.getColor(applicationContext, 17170452))
}
@SuppressLint("ResourceType")
override fun colorDown() {
DrawableCompat.setTint(down.drawable, ContextCompat.getColor(applicationContext, 17170455))
DrawableCompat.setTint(up.drawable, ContextCompat.getColor(applicationContext, 17170444))
}
@SuppressLint("ResourceType")
override fun colorUp() {
DrawableCompat.setTint(down.drawable, ContextCompat.getColor(applicationContext, 17170444))
DrawableCompat.setTint(up.drawable, ContextCompat.getColor(applicationContext, 17170455))
}
这些错误的情况怎么会发生在这里?
【问题讨论】:
-
你在哪里打电话给
DrawableCompat.wrap(drawable)?或者mutate()你的drawable? -
不,我发布的代码是唯一与更改颜色有关的代码
-
谢谢,感谢 hardysim 的回答,终于让它工作了
标签: java android kotlin drawable