如何在android中更改复选框勾选颜色

如何在android中更改复选框勾选颜色,android,checkbox,Android,Checkbox,我正在开发android应用程序,因为我使用复选框,但默认复选框勾选颜色是蓝色,所以我想将该颜色更改为黄色。是否有任何内置属性可将颜色设置为复选框勾选。对复选框使用自定义选择器 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawabl

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

对复选框使用自定义选择器

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


像这样。

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

android:buttonTint="#FFFF00"
res\drawables\
文件夹中创建一个名为
cb_selector.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"/>


drawables
文件夹中添加
unchecked.png
,以及
checked.png
。这些是复选框的选中和未选中图像。

转到styles.xml并添加此行。

<?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>
<style>
<item name="colorAccent">@android:color/holo_green_dark</item> 
</style>

@安卓:彩色/全息绿/深色

使用此选项,您可以更改颜色或设置不同的颜色

从API 21开始,您可以使用按钮色调属性

android:buttonTint="#FFFF00"

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

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


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

对于那些仍在寻找答案的人(我知道这是一个较老的问题)–我发现此解决方案运行良好,无需担心API:

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

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

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

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

Chris Stillwell的回答让我有了尝试的想法,因为我不能简单地使用属性设置颜色。:)

首先,我们必须创建一个包含选中和取消选中颜色情况的可绘制文件,然后您必须将该可绘制文件设置为buttonTint

可绘制的_复选框

<?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/TextAppearance.Regular.XSmall
@颜色/颜色
@可提取/可提取复选框

要以编程方式应用颜色,需要API级别>19。如果最小sdk>19,则可以使用

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

 OR

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

如果只想更改色调,则必须使用以下解决方案。它工作得很好。 在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"/>

Kotlin版本:

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

解决方案如下:这使我的复选框消失O_-Oyou必须在图像周围有边框才能显示框,一个图像将为空边框,另一个带有勾号的图像消失,因为您在android:drawable=“@drawable/checked”中使用了颜色更改。你需要形象!诚然,你的评论效果很好,但你在回答中写了什么不会改变你的主题,而不仅仅是改变复选框?@Nicolas Carrasco好吧,只要你为这种风格创建一个id,并且只将其应用于复选框,它就不会…同样是xml:
android:buttonTint=“@color/arancioneMedium”
我必须使用:
cb.setButtonTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorAccent,null))