如何修改AppCompatCheckBox的勾选标记颜色?
修改AppCompatCheckBox勾选标记颜色的有效方案
问题分析
你当前的样式里,colorAccent控制的是复选框的边框和选中时的背景色,textColorSecondary控制未选中时的图标/文本颜色,但勾选标记(tick)的颜色需要单独通过colorControlActivated主题属性或drawableTint属性设置,这就是之前方法无效的原因。
方案一:通过主题样式统一设置
修改你的MyCheckBox样式,新增colorControlActivated属性指定勾选标记颜色:
<style name="MyCheckBox" parent="AppTheme"> <item name="colorAccent">#ffff00</item> <!-- 复选框边框+选中背景色(黄色) --> <item name="colorControlActivated">#ff0000</item> <!-- 勾选标记颜色(红色,可替换为你需要的颜色) --> <item name="android:textColorSecondary">#ff00ff</item> <!-- 未勾选时的图标颜色(紫色) --> </style>
方案二:直接在布局中单独设置
如果只想给单个CheckBox设置勾选标记颜色,无需修改主题,直接添加app:drawableTint属性(记得在根布局引入xmlns:app="http://schemas.android.com/apk/res-auto"命名空间):
<androidx.appcompat.widget.AppCompatCheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="hello123" android:textColor="#ffffff" android:theme="@style/MyCheckBox" app:drawableTint="#ff0000" /> <!-- 直接指定勾选标记颜色 -->
补充说明
如果需要区分选中/未选中状态的不同颜色,可以创建一个selector颜色文件,再赋值给drawableTint或colorControlActivated:
- 在
res/color/目录下创建checkbox_tint.xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ff0000" android:state_checked="true"/> <!-- 选中时颜色 --> <item android:color="#999999" android:state_checked="false"/> <!-- 未选中时颜色 --> </selector>
- 引用方式:
app:drawableTint="@color/checkbox_tint"或<item name="colorControlActivated">@color/checkbox_tint</item>
内容的提问来源于stack exchange,提问作者GHH
相关产品推荐
相关产品推荐

