我需要重用XML布局并以编程方式更改按钮颜色。
在Android 5中,在XML中应用app:backgroundTint
会更改按钮的颜色,但是我需要以编程方式进行操作,并且我会in Recyclerview
进行操作:
holder.button.supportBackgroundTintList = ContextCompat.getColorStateList(context, backgroundColorRes)
这没有效果。
答案 0 :(得分:2)
setSupportBackgroundTintList()
方法带有@RestrictTo({Scope.LIBRARY_GROUP})
的注释,这意味着您不应直接调用它。相反,您应该使用ViewCompat.setBackgroundTintList()
。
尝试将代码更改为此:
val colorStateList = ContextCompat.getColorStateList(context, backgroundColorRes)
ViewCompat.setBackgroundTintList(holder.button, colorStateList)
如果您查看ViewCompat.setBackgroundTintList()
的源代码,就会发现它对API 21+(Android 5及更高版本)的作用与早期版本不同。很有可能仅在早期版本的Android上应用了“支持”背景色,而ViewCompat
可以使其成为背景色,以便您不必考虑这一点。