我正在开发安卓应用程序,其中使用了复选框,但默认的复选框勾选颜色为蓝色,我想把它改成黄色。是否有内置属性可设置复选框勾选颜色。
很遗憾,改变复选框勾选标记的颜色不是一个简单的属性。
在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。<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
,它们是复选框的选中和未选中图像。
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/colorAccent"/>
优点:在 API 21 以下也可以使用,并且您不需要重新绘制复选框。
从API 21开始,您可以使用按钮着色属性。
android:buttonTint="#FFFF00"
final CheckBox cb = new CheckBox(getApplicationContext());
cb.setButtonTintList(getColorStateList(R.color.colorAccent));
Chris Stillwell的回答启发了我尝试这个方法,因为我不能简单地使用属性来设置颜色。 :)
android:buttonTint="@color/arancioneMedium"
- saracb.setButtonTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorAccent, null)));
- gig6打开styles.xml文件并添加此行。
<style>
<item name="colorAccent">@android:color/holo_green_dark</item>
</style>
使用此功能,您可以更改颜色或设置不同的颜色。
如果您只想更改色调颜色,则必须使用以下解决方案。它可以完美地工作。 在您的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)
<?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>
使用自定义选择器来控制复选框。
<?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>
像这样。
这适用于png。