如何设置复选框边框颜色

Posted

技术标签:

【中文标题】如何设置复选框边框颜色【英文标题】:How to set checkbox border color 【发布时间】:2014-12-14 09:02:04 【问题描述】:

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

我玩了不同的颜色参数但没有成功。 我需要盒子的黑色边框。 是的,有制作自定义复选框的示例。 在所有可绘制示例中,普通框在新形状内都是可见的。 并且android:text=""中的可绘制形状很窄,没有文字。

但是为什么复选框在通常的 xml 中看起来不太好:

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

</LinearLayout>

有什么想法吗?谢谢!

【问题讨论】:

【参考方案1】:

你可以使用属性

android:buttonTint="what you want" 设置复选框边框颜色。

【讨论】:

这也设置了复选框的内部。不是你想要的!【参考方案2】:

现在回答为时已晚,但我想分享对我有用的方法。 粘贴下面的代码。它会改变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>

现在在您的 ma​​in_activity.xmlCheckBox 代码下方

<CheckBox android:id="@+id/check_agree"
          android:layout_
          android:layout_
          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"。希望它会起作用。

【讨论】:

只有当我在我的主应用程序样式中插入样式项时,它才对我有用。无论如何,谢谢!【参考方案3】:

你尝试过here、here和here吗? 根据回答您的问题

But why checkbox does not look okay in usual xml

这是因为有时,android 图形视图无法呈现自定义视图,在这种情况下,您需要在模拟器或设备上运行代码来测试它。

更新 如果你不想使用drawables,那么你也可以在xml中定义drawable shape,比如

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

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

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

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

【讨论】:

在 IntelliJ Idea 的预览中,它看起来还不错。但在模拟器和设备上不可见。在您的参考文献中,它们会更改复选标记颜色。但我想更改框边框颜色 因此您需要为框边框设置一个切片。像在您将放置在可绘制文件夹中的图像一样切片。 谢谢,但不明白。切片是什么意思? 切片为您将放置在可绘制文件夹中的图像。无论如何忘记这一点,并检查我的更新答案。也看看this。 我在尝试您的示例的文本框中输入了文本。不,我需要带有可见边框的普通盒子。【参考方案4】:

你可以使用它们中的任何一个:

app:buttonTint="color code here"

android:buttonTint="color code here"

【讨论】:

【参考方案5】:

上面的答案都不适合我,但this one 可以。它建议使用选择器并将其应用于复选框,这对我来说非常有效。

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

【讨论】:

【参考方案6】:

对于 API 级别

app:buttonTint="EEEEEE"

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

android:buttonTint="EEEEEE" 

【讨论】:

以上是关于如何设置复选框边框颜色的主要内容,如果未能解决你的问题,请参考以下文章

Angular Material2 md-复选框边框颜色

如何在颤动中更改复选框边框颜色?默认情况下,它显示为黑色,但我希望它为灰色

CSS如何怎么设置div边框颜色宽度和高度?

CSS如何怎么设置div边框颜色宽度和高度

更改材质 ui 复选框的边框颜色

如何改变C#的Panel控件的边框颜色