Android DrawableCompat.setTint()是否懒惰?
我正在设计一个应用程序,它在主活动中有3个按钮,在一个片段中有几个按钮。我想更改片段中按钮的颜色,这取决于切换的是主活动的哪个按钮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
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()?我现在很难调整你的建议,因为我不知道如何调整。