为什么在Lollipop 5.1 API 22上AppCompatCheckbox的着色失败?

时间:2016-05-20 12:43:43

标签: android android-support-library android-appcompat android-checkbox

这个AppCompat代码在Marshmallow上工作正常,可以在Lollipop API 22设备上对AppCompatCheckbox中的复选标记,文本和背景进行着色,尽管文本和背景都是有色的,但复选标记本身并没有。为什么呢?

    public static void applyThemeToCheckBox(AppCompatCheckBox checkbox, @ColorInt int backgroundColor, @ColorInt int textColor) {
        checkbox.setTextColor(textColor);
        checkbox.setBackgroundColor(backgroundColor);
        int[] colors = new int[] {
                textColor,
                textColor,
                textColor,
                textColor
        };
        ColorStateList colorStateList = new ColorStateList(getStates(), colors);
        checkbox.setSupportButtonTintList(colorStateList);
    }

private static int[][] getStates() {
    return new int[][] {
            new int[] { android.R.attr.state_enabled}, // enabled
            new int[] {-android.R.attr.state_enabled}, // disabled
            new int[] {-android.R.attr.state_checked}, // unchecked
            new int[] { android.R.attr.state_pressed}  // pressed
    };
}

我看过使用DrawCompat(我们怎么知道这些东西存在?)并且它在其他情况下对我有用,但我看不到如何访问API 22上的复选标记。

请不要涉及静态主题的解决方案,应用程序根据API响应动态设置样式,着色必须以编程方式完成。

0 个答案:

没有答案