Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Android DrawableCompat.setTint()是否懒惰?_Android_Kotlin_Android Drawable - Fatal编程技术网

Android DrawableCompat.setTint()是否懒惰?

Android DrawableCompat.setTint()是否懒惰?,android,kotlin,android-drawable,Android,Kotlin,Android Drawable,我正在设计一个应用程序,它在主活动中有3个按钮,在一个片段中有几个按钮。我想更改片段中按钮的颜色,这取决于切换的是主活动的哪个按钮 color1.setOnClickListener { brush_chosen = 1 color1.setBackgroundColor(R.color.black) color2.setBackgroundColor(0x00000000) color3.setBackgroundColor(0

我正在设计一个应用程序,它在主活动中有3个按钮,在一个片段中有几个按钮。我想更改片段中按钮的颜色,这取决于切换的是主活动的哪个按钮

color1.setOnClickListener {
        brush_chosen = 1

        color1.setBackgroundColor(R.color.black)
        color2.setBackgroundColor(0x00000000)
        color3.setBackgroundColor(0x00000000)
        if (frag_num == 8 ){
            frag_8p.set_frag_value(frag_num,brush_chosen)
        }
        
    }
函数集\u frag\u值为:

fun set_frag_value(frag_num:Int,brush:Int) : Int
{
    brush_chosen=brush
    return brush
}
这将更改所选笔刷的值。然后我做了一个函数:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    ib0.setOnClickListener { view ->
        Log.d("brush_color","Brush of 0 : "+brush_chosen)
        if (brush_chosen==1)
        {
            Log.d("brush_color","Brush Confirm : "+brush_chosen)
            DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireContext(),R.color.rndcolor1))
        }
        else if (brush_chosen==2)
        {
            Log.d("brush_color","Brush Confirm : "+brush_chosen)
            DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireContext(),R.color.purple_500))
        }
        else if (brush_chosen==3)
        {
            Log.d("brush_color","Brush Confirm : "+brush_chosen)
            DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireContext(),R.color.teal_200))
        }
        Log.d("brush_color","End of onclicklistener ")

    }
}
我检查了日志,理论上这段代码应该可以正常工作。然而,我发现按钮颜色没有正确改变,甚至我检查了我的应用程序是否正确打印了所有日志。例如,当我单击主活动中的按钮颜色1时,所选的变量brush_变为1,我单击的片段中的第一个按钮更改其颜色。但是我点击的第二个按钮没有改变它的颜色


我使用DrawableCompat的代码有什么问题吗???

Android在引擎盖下进行了一些
Drawable
状态缓存。您可能需要在
Drawable
上调用
mutate()
,然后设置新的
Drawable
,以便正确显示色调。

您能告诉我如何使用mutate()?我现在很难调整你的建议,因为我不知道如何调整。