如何设置复选框边框颜色

34

在白色背景下,复选框边框不可见。

enter image description here

我尝试了不同的颜色参数,但都没有成功。 我需要黑色边框的方框。 是的,有一些示例可以制作自定义复选框。 在所有可绘制的示例中,正常的方框位于新形状内部可见。 而且带有android:text=""文本的可绘制形状非常狭窄。

enter image description here

但是为什么复选框在普通xml中看起来不好呢:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutBottom1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="#FFFFFF"
    android:gravity="center" >
    <CheckBox
        android:id="@+id/checkBottom1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AAAA"
        android:visibility="visible"
        android:textColor="#000000"
        android:checked="true" />

</LinearLayout>

有什么想法吗?谢谢!

6个回答

76
您可以使用属性 android:buttonTint="您想要的颜色" 来设置您的复选框边框颜色。

14
这也会设置复选框内部的内容。这不是你想要的! - IgorGanapolsky

44

虽然有些晚,但我想分享一下对我有用的内容。请复制以下代码。它可以更改 CheckBox 的边框颜色和 textColor

styles.xml

<style name="MyCheckBox" parent="Theme.AppCompat.NoActionBar">
    <item name="colorControlNormal">#000</item>   <!-- normal border color change as you wish -->
    <item name="colorControlActivated">#000</item> <!-- activated color change as you wish -->
    <item name="android:textColor">#FFFF3F3C</item> <!-- checkbox text color -->
</style>

现在在你的main_activity.xml文件中,在下面放置CheckBox代码:

<CheckBox android:id="@+id/check_agree"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="10dp"
          android:text="I agree"
          android:theme="@style/MyCheckBox"/>   <!-- here apply your checkbox style -->
如果上述样式不起作用,则将父主题parent="Theme.AppCompat.NoActionBar"替换为parent="Theme.AppCompat.Light"。希望它能起作用。

1
只有当我将样式项插入到我的主应用程序样式中时,它才对我起作用。无论如何,谢谢! - Red Hot Chili Coder

5
你有没有试过去这三个链接查找相关信息:此处此处此处?至于回答你的问题。
But why checkbox does not look okay in usual xml

这是因为有时候Android的图形视图无法渲染自定义视图,这种情况下您需要在模拟器或设备上运行代码进行测试。

更新 如果您不想使用可绘制对象(drawables),那么您也可以在xml中定义可绘制对象的形状,例如:

 <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >

        <solid android:color="#ffffff" >
        </solid>

        <stroke
            android:width="2dp"
            android:color="#ff0000" >
        </stroke>
<corners android:radius="5dp" />

    <padding
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:top="4dp" />
    </shape>

1
在IntelliJ Idea的预览中看起来还好,但在模拟器和设备上不可见。在您的参考资料中,他们更改了勾选标记的颜色。但我想更改框边框的颜色。 - Niaz
所以你需要为框边缘准备一个切片。切片是指一张图片,你需要将它放在drawable文件夹中。 - Antrromet
谢谢,但是不明白。你说的“slice”是什么意思? - Niaz
切片就像您要放置在drawable文件夾中的圖像。無論如何,忘記這個問題,看看我的更新答案吧。還要查看此頁面:https://dev59.com/5XnZa4cB1Zd3GeqPnDS4。 - Antrromet
我在尝试你的例子时得到了文本框内的文本。不,我需要有可见边框的普通文本框。 - Niaz

5

你可以使用其中之一:

app:buttonTint="color code here"

或者
android:buttonTint="color code here"

2

以上的答案都对我没用,但是这个有用。它建议使用选择器并将其应用于复选框,这对我非常有效。

这并没有解释上面显示的复选框的奇怪外观,这就是为什么我不会将此问题标记为重复,但我认为它仍然可以作为一种解决方案。


0

对于API级别< 21,您可以使用:

app:buttonTint="EEEEEE"

对于 API 级别 >= 21,您可以使用:

android:buttonTint="EEEEEE" 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接