我有一个 AppCompatEditText ,其属性 backgroundTint 设置为特定颜色。 我已经创建了一种方法来以编程方式更改背景色调,并且在API 17(4.2 Jelly Bean)到API 25(7.1.1 Nougat)的所有Android版本中都有效,除了API 21(5.0 Lollipop)< /强>
我不知道自己做错了什么。这是我的代码:
public void changeViewBackgroundColor(Context context, View view, int color) {
int theColor = ContextCompat.getColor(context, color);
if (view instanceof TintableBackgroundView) {
ColorStateList colorStateList = ColorStateList.valueOf(theColor);
ViewCompat.setBackgroundTintList(view, colorStateList);
} else {
view.setBackgroundColor(theColor);
}
view.invalidate();
}
答案 0 :(得分:0)
不幸的是,在API 21中引入了一个更改,该更改在setBackgroundTintList
中使用时或视图本身(后来在API 22中已修复)破坏了ViewCompat
。
您应该使用setSupportBackgroundTintList
作为{strong> AppCompat * 视图的成员(例如AppCompatEditText
)
AppCompatEditText editText = findViewById(R.id.your_view);
editText.setSupportBackgroundTintList(colorStateList);
如果要在 XML 中进行设置,只需使用支持库中的app:setBackgroundTintList
,而不是android:setBackgroundTintList