如何在android中更改复选框勾选颜色
我正在开发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
<?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))代码>