我搜索了一些地方,似乎无法找出复选框边框的CheckBox
可绘制。任何人都可以指出我正确的方向吗?Android:设置CheckBox的颜色
这里是什么样子选中(可以勉强看到箱子)
这里是选中状态
这里是我想要做它看起来像。
我搜索了一些地方,似乎无法找出复选框边框的CheckBox
可绘制。任何人都可以指出我正确的方向吗?Android:设置CheckBox的颜色
这里是什么样子选中(可以勉强看到箱子)
这里是选中状态
这里是我想要做它看起来像。
您可以使用自定义复选框xml文件这一点。保存下面的XML代码在drawables
文件夹,命名为custom_checkbox.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/cbchk_blue"
android:state_focused="false">
</item>
<item android:state_checked="true"
android:drawable="@drawable/cbchk_blue"
android:state_focused="true">
</item>
<item android:state_checked="false"
android:drawable="@drawable/cbunchk_blue"
android:state_focused="false">
</item>
<item android:state_checked="false"
android:drawable="@drawable/cbunchk_blue"
android:state_focused="true">
</item>
</selector>
然后用这个文件作为你这样的复选框的背景:
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/custom_checkbox"
android:id="@+id/checkBox" />
我在这里上传自己的图片,我使用地方cbchk_blue和cbunchk_blue的
谢谢你的具体情况。我似乎无法指出这两个属性是负责任的。谢谢。 +1 – Kirk 2012-07-13 21:57:00
那么如何改变这种颜色? – 2014-03-02 16:57:11
同样的问题也会发生,当您使用主题全息黑暗的活动和白色背景。所以复选框有黑色风格。简单的解决方法是直接设置背景从Android的全息光:
int id = Resources.getSystem().getIdentifier("btn_check_holo_light", "drawable", "android");
checkBox.setButtonDrawable(id);
你可以找到很好的概述,这一切的东西以下的答案是如何工作的: https://stackoverflow.com/a/10139809/1170154
正是我一直在寻找过去几个小时。谢谢!! – jakeneff 2014-09-10 20:39:34
这是我一直在寻找的机器人。谢谢!! – codinguser 2015-03-05 17:03:05
这对我来说非常合适!谢谢! – wyzkid207 2015-07-08 14:45:17
由于Android 5和API等级21就可以自由地选择复选框的颜色(和许多其他小部件)。以下内容添加到您的values-v21/styles.xml
(同时确保您有values/styles.xml
较早的API回退:
<style name="CustomCheckBox">
<item name="android:theme">@style/CheckBoxAppTheme</item>
</style>
<style name="CheckBoxAppTheme">
<item name="android:colorAccent">
@color/theFillColorInCheckedState
</item>
<item name="android:colorControlNormal">
@color/theBorderColorInUncheckedState
</item>
<item name="android:colorControlHighlight">
@color/theBackgroundColorWhenFocusingTheCheckBox
</item>
</style>
然后你只需要将样式应用到你的复选框,在布局:
<CheckBox
style="@style/CustomCheckBox" />
这它的复选框以你最喜欢的颜色出现!
好的,所以我很抱歉,但大多数答案都不完整,或者有一些小错误。不同版本的Android的“样式”控制是史诗屁股疼痛。在一个项目的设计约束非常严格的项目中,我把头发拉了几天后,终于打破了我的头发,写了一个测试应用程序,然后真正挖掘并测试了各种用于样式开关和复选框的解决方案,因为当一个设计有一个它经常有另一个。这是我发现的...
第一个:你实际上不能设计其中任何一个,但是你可以将一个主题应用到所有的主题,或者只是其中的一个主题。
第二个:您可以使用XML完成所有操作,并且不需要第二个值-v21/styles.xml。
第三:,当涉及到交换机你有两个基本的选择,如果你想支持旧版本的Android(像我敢肯定,你这样做)......
SwitchCompat
你将能够在不同的平台上看起来相同。Switch
,您可以使用主题的其余部分或仅使用该特定开关,并在较旧版本的Android上进行主题处理,您只会看到一个未打印的旧方形开关。好的,现在可以看到简单的参考码。再次,如果你创建一个简单的Hello World!并且放下这段代码就可以发挥你的心中的内容。所有这一切都在这里是锅炉板,所以我只是要包括活动和风格的XML ...
activity_main.xml中......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="'Styled' SwitchCompat" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_item"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false"
android:textOff="OFF"
android:textOn="ON"
app:switchTextAppearance="@style/BrandedSwitch.text"
app:theme="@style/BrandedSwitch.control"
app:showText="true" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Themed SwitchCompat" />
<android.support.v7.widget.SwitchCompat
android:id="@+id/switch_item2"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Themed Switch" />
<Switch
android:id="@+id/switch_item3"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false"
android:textOff="OFF"
android:textOn="ON"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="'Styled' Switch" />
<Switch
android:id="@+id/switch_item4"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false"
android:textOff="OFF"
android:textOn="ON"
android:theme="@style/BrandedSwitch"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="'Styled' CheckBox" />
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false"
android:theme="@style/BrandedCheckBox"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kunai.switchtest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Themed CheckBox" />
<CheckBox
android:id="@+id/checkbox2"
android:layout_width="wrap_content"
android:layout_height="46dp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:checked="true"
android:longClickable="false"/>
</RelativeLayout>
styles.xml ...
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#3F51B5</item>
<item name="colorPrimaryDark">#303F9F</item>
<item name="colorAccent">#FF4081</item>
</style>
<style name="BrandedSwitch.control" parent="Theme.AppCompat.Light">
<!-- active thumb & track color (30% transparency) -->
<item name="colorControlActivated">#e6e600</item>
<item name="colorSwitchThumbNormal">#cc0000</item>
</style>
<style name="BrandedSwitch.text" parent="Theme.AppCompat.Light">
<item name="android:textColor">#ffa000</item>
<item name="android:textSize">9dp</item>
</style>
<style name="BrandedCheckBox" parent="AppTheme">
<item name="colorAccent">#aaf000</item>
<item name="colorControlNormal">#ff0000</item>
</style>
<style name="BrandedSwitch" parent="AppTheme">
<item name="colorAccent">#39ac39</item>
</style>
我知道,我知道,你太懒惰了,你只是想让你的代码写出来。我知道了。这里是什么样子,当你运行它像...
API_21:
API_18:
这是一个完美的答案。让我的生活变得轻松。这应该是公认的。 – Rachit 2016-09-09 05:09:09
您可以设置复选框颜色这样API21 &以上
机器人:buttonTint = “@颜色/ YOUR_COLOR”
<CheckBox
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:buttonTint="@color/YOUR_COLOR" />
对于支持旧版本使用V7库AppCompatCheckBox
应用:buttonTint = “@颜色/ YOUR_COLOR”
<android.support.v7.widget.AppCompatCheckBox
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:buttonTint="@color/YOUR_COLOR" />
你可以设置为背景,以checkBox.so其采取的图片边界并设置它的背景。 – AkashG 2012-07-13 04:53:59
设置'android:buttonTint =“@ color/mybrown”'是更改复选框颜色的简单方法。 – shauvik 2015-06-24 22:54:02
android:buttonTint =“@ color/mybrown”会改变复选框边框的颜色。唯一的缺点是,它也改变了你可能不想要的刻度线的颜色。 – jetty 2015-08-18 07:56:37