截至目前,复选框已填充了工具栏主题颜色,但我需要以不同于工具栏的其他颜色显示复选框,因此我需要在android中以编程方式更新复选框颜色。怎么做?
为您的设置活动创建主题,将此参数添加到样式中:
<style name="AppTheme.NoActionBar.SettingActivity" parent="AppTheme.NoActionBar">
<!--when the check box is checked --!>
<item name="colorControlNormal">@color/your-color</item>
<!--when the check box is unchecked --!>
<item name="colorControlActivated">@color/your-color</item>
</style>`
如果使用的是AppCompatCheckBox,请按照以下说明进行操作
使用buttonTint更改21+以上api版本的按钮和颜色选择器的颜色。
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/checkbox_filter_tint"
tools:targetApi="21"/>
res / colors / checkbox_filter_tint.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/light_gray_checkbox"
android:state_checked="false"/>
<item android:color="@color/common_red"
android:state_checked="true"/>
</selector>
对于Checkboxpreference,您应该使用此:
https://stackoverflow.com/a/6042324/11549280
和
对于CheckBox,您应该使用:假设您的复选框为:
Checkbox checkbox;
要以编程方式创建ColorStateList,使用
ContextCompat.getColorStateList(context, R.color.your_color);
然后是>>
CompoundButtonCompat.setButtonTintList(checkbox, colorStateList);