【发布时间】:2012-07-03 09:13:11
【问题描述】:
如何将特定 CheckBox 的 Android 复选框的默认颜色从绿色复选标记更改为蓝色?
【问题讨论】:
-
好像是this question的副本。
-
不同的是这个问题有一个真实而新的答案。
标签: android android-layout android-widget
如何将特定 CheckBox 的 Android 复选框的默认颜色从绿色复选标记更改为蓝色?
【问题讨论】:
标签: android android-layout android-widget
不幸的是,改变颜色并不是一个简单的属性。复选标记是图像,因此您必须创建自定义图像。看看这个example
创建一个选择器 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/star_down" />
<item android:state_checked="false" android:drawable="@drawable/star" />
</selector>
将此 xml 文件保存在您的 res\drawables\ 文件夹中。然后在您的布局文件中将其应用于您的复选框,如下所示:
<CheckBox
android:text="Custom CheckBox"
android:button="@drawable/checkbox_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在本例中,您将选择器 xml 文件命名为“checkbox_selector.xml”,并且您的 drawables 文件夹中还需要一个 star_down.png 和 star.png。您可以使用此技术通过将系统复选框图像更改为您想要的任何颜色并在选择器中引用更改后的 png 文件来创建不同颜色的复选框。
【讨论】:
使用buttonTint(从 API 级别 23 开始)在 xml 中很容易做到这一点:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/COLOR_HERE" />
正如 Nicolás 指出的那样,您可以对旧 API 使用 appCompatCheckbox v7:
<android.support.v7.widget.AppCompatCheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/COLOR_HERE" />
【讨论】:
<android.support.v7.widget.AppCompatCheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/COLOR_HERE" /> 从 API 级别 7 开始执行此操作