如何在Android中编程改变CheckBox框的颜色(支持库)?

12

我正在尝试以编程方式将复选框的方框颜色更改为与主题默认颜色不同的颜色。 问题是,我像这样做:

checkbox.setSupportButtonTintList(ColorStateList);

它能够工作,但根据其类文档,这个方法已经被限制只能被来自同一包(com.android.support)的类使用。这是我从Android Studio收到的警告:

AppCompatCheckBox.setSupportButtonTintList can only be called from within the same library group (groupId=com.android.support)

有没有一种适用于所有API级别的标准/正确方法来做到这一点?

3个回答

24

最后,在谷歌的一位工程师的帮助下,我在这里找到了答案:https://code.google.com/p/android/issues/detail?id=202235。我之前不使用的想法是正确的:

checkbox.setSupportButtonTintList(ColorStateList);

这似乎是一个私有 API。相反,您需要使用:

CompoundButtonCompat.setButtonTintList(checkbox, colorStateList);

2
谢谢!另外一个有用的提示:要以编程方式创建ColorStateList,您可以使用ContextCompat.getColorStateList(context, R.color.my_checkbox_selector) - Kirill Karmazin

2
chxAll.setButtonTintList(ColorStateList.valueOf(Color.parseColor("#CC0000")));

chxAll是android.widget.CheckBox的一个对象

将十六进制颜色代码替换为所需颜色


2

根据 rylexr 的回答,您可以按照以下方式指定颜色:

CompoundButtonCompat.setButtonTintList(checkboxView, ColorStateList
                        .valueOf(getResources().getColor(R.color.red)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接