Java DrawableCompat.setTint不可靠?
我有两个Java DrawableCompat.setTint不可靠?,java,android,kotlin,drawable,Java,Android,Kotlin,Drawable,我有两个ImageView(向上、向下),我想根据某些操作以颜色更新它们。有三种不同的情况: 上红下黑 上黑下红 向上绿色,向下绿色 我有三个相应地改变颜色的函数,它们在正确的位置执行(我有一个TextView,它打印出当前调用的内容,结果与预期的一样),但我发现它们通常不能正常工作——因为它们只为一个ImageView着色。正如我在上面所写的,这是三种可能的情况-但是有时一个imageview是绿色的,另一个是红色的,或者两个imageview都是红色的,或者只有一个imageview是绿色的
ImageView
(向上、向下),我想根据某些操作以颜色更新它们。有三种不同的情况:
上红下黑
上黑下红
向上绿色,向下绿色
我有三个相应地改变颜色的函数,它们在正确的位置执行(我有一个TextView,它打印出当前调用的内容,结果与预期的一样),但我发现它们通常不能正常工作——因为它们只为一个ImageView着色。正如我在上面所写的,这是三种可能的情况-但是有时一个imageview是绿色的,另一个是红色的,或者两个imageview都是红色的,或者只有一个imageview是绿色的,尽管处于向上绿色,向下绿色的情况下-这是不应该发生的。以下是功能:
/** 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))
}
这些错误案例怎么会发生在这里
val drawableUp = DrawableCompat.wrap(ContextCompat.getDrawable(this, R.drawable.ic_play_arrow)!!)
up.setImageDrawable(drawableUp)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
DrawableCompat.setTint(drawableUp, ContextCompat.getColor(this, colorTop))
} else {
drawableUp.mutate().colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(colorTop, BlendModeCompat.SRC_ATOP)
}
我的情况就是这样
我的情况就是这样的你是在某处调用DrawableCompat.wrap(drawable)
吗?或者mutate()
您的drawable?不,我发布的代码是唯一一个与更改颜色有关的代码检查出来谢谢,感谢HardySimar的回答您是否在某处调用DrawableCompat.wrap(drawable)
?或者mutate()
您的绘图?不,我发布的代码是唯一与更改颜色有关的代码检查结果谢谢,多亏了hardysim的回答,它才得以工作