Android 5上的AppCompatButton:app:backgroundTint可以使用,但supportBackgroundTintList不能:({

时间:2019-01-04 15:50:09

标签: android button android-appcompat

我需要重用XML布局并以编程方式更改按钮颜色。 在Android 5中,在XML中应用app:backgroundTint会更改按钮的颜色,但是我需要以编程方式进行操作,并且我会in Recyclerview进行操作:

holder.button.supportBackgroundTintList = ContextCompat.getColorStateList(context, backgroundColorRes)

这没有效果。

1 个答案:

答案 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可以使其成为背景色,以便您不必考虑这一点。