gpt4 book ai didi

java - android - ViewCompat setBackgroundTintList 在 API 21 中不起作用

转载 作者:行者123 更新时间:2023-12-02 06:47:31 27 4
gpt4 key购买 nike

我有一个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();
}

最佳答案

不幸的是,API 21 中引入了一项更改,当从 ViewCompat 或 View 本身使用时,会破坏 setBackgroundTintList(后来在 API 22 中修复)。

您应该使用 setSupportBackgroundTintList 来代替它,您可以将其作为 AppCompat* View 的成员找到(例如 AppCompatEditText)

AppCompatEditText editText = findViewById(R.id.your_view);
editText.setSupportBackgroundTintList(colorStateList);

如果您想在XML中设置它,只需使用支持库中的app:setBackgroundTintList,而不是android:setBackgroundTintList

关于java - android - ViewCompat setBackgroundTintList 在 API 21 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com