当前位置:  开发笔记 > 编程语言 > 正文

如何以编程方式更改复选框选中的颜色

如何解决《如何以编程方式更改复选框选中的颜色》经验,为你挑选了2个好方法。

我在Android中使用CheckBox视图.我想在检查时更改它的颜色.现在它是默认的深绿色,当它被检查时,我想把它改成不同的东西,当没有检查时,只是默认颜色.

这是我的代码:

CheckBox c = new CheckBox(this);
c.setId(View.generateViewId());

c.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(buttonView.isChecked())
        {
            buttonView.setBackgroundColor(Color.rgb(64, 131, 207));
        }
        if(!buttonView.isChecked())
        {
            buttonView.setBackgroundColor(Color.WHITE);
        }

    }
});

问题是它没有改变正确的事情.关于如何改变这种颜色的任何想法?

在此输入图像描述



1> ywwynm..:

更换你CheckBoxAppCompatCheckBox和呼叫下面的方法:

public static void setCheckBoxColor(AppCompatCheckBox checkBox, int uncheckedColor, int checkedColor) {
    ColorStateList colorStateList = new ColorStateList(
            new int[][] {
                    new int[] { -android.R.attr.state_checked }, // unchecked
                    new int[] {  android.R.attr.state_checked }  // checked
            },
            new int[] {
                    uncheckedColor,
                    checkedColor
            }
    );
    checkBox.setSupportButtonTintList(colorStateList);
}


最后一行应该是'CompoundButtonCompat.setButtonTintList(checkBox,colorStateList)'

2> sud007..:

要为CompoundButton Tints着色,请尝试使用API> 21及以下.

if (Build.VERSION.SDK_INT < 21) {
    CompoundButtonCompat.setButtonTintList(button, ColorStateList.valueOf(tintColor));//Use android.support.v4.widget.CompoundButtonCompat when necessary else
} else {
    button.setButtonTintList(ColorStateList.valueOf(tintColor));//setButtonTintList is accessible directly on API>19
}


实际上,第一个分支本身就足够了。完全不需要检查SDK版本。
推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有