如何更改android中的复选框刻度颜色

时间:2013-12-12 11:48:30

标签: android checkbox

我正在开发Android应用程序在我使用复选框但默认复选框刻度颜色为蓝色所以我想将该颜色更改为黄色。是否有任何内置属性设置颜色复选框勾选。

12 个答案:

答案 0 :(得分:56)

您可以在不使用buttonTint更改drawable的情况下执行此操作(从API 23开始):

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:buttonTint="@color/CHECKMARK_COLOR_HERE" />

或使用AppCombatCheckBox用于旧版本的android / compatibility。

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:buttonTint="@color/CHECKMARK_COLOR_HERE" /> 

答案 1 :(得分:35)

不幸的是,更改复选框复选标记的颜色并不是一个简单的属性

res\drawables\文件夹中创建名称为cb_selector.xml

的选择器xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/checked" />
    <item android:state_checked="false" android:drawable="@drawable/unchecked" />
</selector>

在布局文件中将此文件应用于复选框

<CheckBox
    android:id="@+id/cb"
    android:text="My CheckBox"
    android:button="@drawable/cb_selector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

unchecked.png文件夹中添加checked.pngdrawables。这些是复选框的已选中和未选中图像。

答案 2 :(得分:8)

您可以使用android.support.v7库中app:buttonTint的属性AppCompatCheckBox

<android.support.v7.widget.AppCompatCheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:buttonTint="@color/colorAccent"/>

优势:也可以在API 21下工作,您无需重新绘制复选框。

答案 3 :(得分:4)

从API 21开始,您可以使用Button Tint属性

android:buttonTint="#FFFF00"

答案 4 :(得分:2)

转到styles.xml并添加此行。

<style>
<item name="colorAccent">@android:color/holo_green_dark</item> 
</style>

使用它可以改变颜色或设置不同的颜色

答案 5 :(得分:0)

使用自定义选择器作为复选框。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/patch_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/patch_normal" android:state_enabled="true"/>
    <item android:drawable="@drawable/patchdisable" android:state_enabled="false"/>


</selector>

喜欢这个。

答案 6 :(得分:0)

对于那些仍在寻找答案的人(我知道这是一个较旧的问题) - 我发现此解决方案效果不错,无需担心API:https://stackoverflow.com/a/31840734/7601437

简而言之:为复选框创建一个样式,例如checkboxStyle然后将其作为主题实施:android:theme="@style/checkboxStyle"

答案 7 :(得分:0)

如果要以编程方式执行此操作,则只需执行以下操作:

final CheckBox cb = new CheckBox(getApplicationContext());
cb.setButtonTintList(getColorStateList(R.color.colorAccent));

克里斯·斯蒂尔威尔(Chris Stillwell)的回答使我有了尝试这种想法的想法,因为我不能简单地使用属性设置颜色。 :)

答案 8 :(得分:0)

首先,我们必须创建一个包含选中和未选中颜色情况的可绘制对象,然后必须将此可绘制对象设置为buttonTint;

drawable_checkbox;

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/kelleyGreen" />
    <item android:state_checked="false" android:color="@color/warmGrey" />
</selector>
<style name="CheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox">
    <item name="android:textAppearance">@style/TextAppearance.Regular.XSmall</item>
    <item name="android:textColor">@color/warmGrey</item>
    <item name="buttonTint">@drawable/drawable_checkbox</item>
</style>

答案 9 :(得分:0)

要以编程方式应用颜色,如果您的最小SDK大于19,则需要API级别> 19,

checkbox[i]!!.setButtonTintList(getColorStateList(activity!!,R.color.green))

 OR

view.setButtonTintList(getColorStateList(activity !!,R.color.green))

答案 10 :(得分:0)

如果您只想更改色调,则必须使用以下解决方案。它的工作完美。 在 res/drawable 文件夹中创建一个选择器“check_box_tint.xml”。

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

现在将此可绘制对象用作复选框色调的颜色。

<CheckBox
   android:id="@+id/cbSelectAll"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:buttonTint="@drawable/check_box_tint"/>

答案 11 :(得分:0)

Kotlin 版本:

checkBox.buttonTintList = ColorStateList.valueOf(R.color.colorPrimary)