如何以编程方式更新复选框首选项中复选框的颜色?

问题描述 投票:-1回答:2

截至目前,复选框已填充了工具栏主题颜色,但我需要以不同于工具栏的其他颜色显示复选框,因此我需要在android中以编程方式更新复选框颜色。怎么做?

android
2个回答
0
投票

为您的设置活动创建主题,将此参数添加到样式中:

 <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>

0
投票

对于Checkboxpreference,您应该使用此:

https://stackoverflow.com/a/6042324/11549280

对于CheckBox,您应该使用:假设您的复选框为:

Checkbox checkbox;

要以编程方式创建ColorStateList,使用

ContextCompat.getColorStateList(context, R.color.your_color);

然后是>>

CompoundButtonCompat.setButtonTintList(checkbox, colorStateList);
© www.soinside.com 2019 - 2024. All rights reserved.