在android Lollipop bug中以编程方式提示CheckBox和RadioButton

时间:2017-05-02 13:26:02

标签: android view android-5.0-lollipop tint

我正在开发一个项目,我必须以编程方式设置主题复选框和单选按钮。

一切正常,除了Lollipop,只有当我以编程方式设置所述按钮时,按钮的状态才会反转

https://drive.google.com/file/d/0B6JcrJ_vY1HnOXF6Yk4yT29ZUTA/view?usp=sharing

正如你在视频中看到的那样(对不起质量),当我点击按钮时按钮正常工作,但当我用“所有”按钮以编程方式设置它们时,它们只会在棒棒糖上出现。

这是着色代码

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);
    }

1 个答案:

答案 0 :(得分:1)

这是答案 https://issuetracker.google.com/issues/37084519#comment10

AppCompatRadioButton不应该像这样使用。您使用的私有API在未正确使用时必然会中断。

使用CompoundButtonCompat.setButtonTintList()。