【问题标题】: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_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>

有什么想法吗?谢谢!

【问题讨论】:

    标签: android android-layout android-styles android-checkbox


    【解决方案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_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"。希望它会起作用。

    【讨论】:

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

    你尝试过hereherehere吗?
    根据回答您的问题

    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:width="2dp"
                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" 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-07-04
          • 1970-01-01
          • 2014-03-24
          • 2014-02-13
          • 2013-06-03
          • 1970-01-01
          • 1970-01-01
          • 2020-01-14
          相关资源
          最近更新 更多