Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DrawableCompat.setTint不可靠?_Java_Android_Kotlin_Drawable - Fatal编程技术网

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的回答,它才得以工作