android棒棒糖bug中的编程主题化复选框和单选按钮

android棒棒糖bug中的编程主题化复选框和单选按钮,android,view,android-5.0-lollipop,tint,Android,View,Android 5.0 Lollipop,Tint,我正在从事一个项目,在这个项目中,我必须以编程方式为复选框和单选按钮设置主题 除了棒棒糖外,一切都很好,只有当我通过编程将按钮设置为选中时,按钮的状态才会反转 正如您在视频中看到的,为质量感到抱歉,当我单击按钮时,按钮可以正常工作,但当我以编程方式使用“一切”按钮设置按钮时,它们只会在棒棒糖上发狂 这是着色代码 public static void setupCheckBox(AppCompatCheckBox checkBox) { int colorOn = getCurr

我正在从事一个项目,在这个项目中,我必须以编程方式为复选框和单选按钮设置主题

除了棒棒糖外,一切都很好,只有当我通过编程将按钮设置为选中时,按钮的状态才会反转

正如您在视频中看到的,为质量感到抱歉,当我单击按钮时,按钮可以正常工作,但当我以编程方式使用“一切”按钮设置按钮时,它们只会在棒棒糖上发狂

这是着色代码

public static void setupCheckBox(AppCompatCheckBox checkBox) {

        int colorOn = getCurrentAccentColor();
        int colorOff = ContextCompat.getColor(checkBox.getContext(), R.color.grey);
        int colorDisabled = 0xFFAAAAAA;
        ColorStateList buttonStates = new ColorStateList(
                new int[][]{
                        new int[]{android.R.attr.state_checked},
                        new int[]{-android.R.attr.state_enabled},
                        new int[]{}
                },
                new int[]{
                        colorOn,
                        colorDisabled,
                        colorOff
                }
        );
        checkBox.setSupportButtonTintList(buttonStates);
    }
这是答案

AppCompatRadioButton不应该这样使用。您使用的是一个私有API,如果使用不正确,它一定会崩溃

使用CompoundButtonCompat.setButtonTintList