更改 checkbox/radio 按钮强调色

Change checkbox/radio button accent color

我有一个带有一些单选按钮和复选框的 Activity。 ATM 它们看起来像这样:

现在我想将这种偏绿色的强调色更改为其他颜色。实现该目标的最佳方式是什么?

您可以为此使用 OnCheckedChangeListener 和一张自己的图片。例如:

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

            if (isChecked) {

                checkbox.setButtonDrawable(R.drawable.yourImage);
            }

        }
    });

当您想要像绿色那样的单色背景时,请使用单色图像。

像这样在您的 drawable 文件夹中创建一个 checkbox_selector.xml,并且您需要两个图像 normal_checkbox.pngselected_checkbox.png

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/normal_checkbox" 
          android:state_checked="false"/>
    <item android:drawable="@drawable/selected_checkbox" 
          android:state_checked="true"/>
    <item android:drawable="@drawable/normal_checkbox"/>    
</selector>

现在更改声明 CheckBox 的布局文件

<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:button="@drawable/checkbox_selector"
android:text="My CheckBox"
android:textColor="@color/Black" />

更多click

对于那些在 2021 年及之后寻找此内容的人,现在有一种更简单的方法可以实现此目的,只需使用 css 的一小部分:

input[type=checkbox], input[type=radio] {
    accent-color: #FFCD00;
}