【问题标题】:How can I change the CheckBox focus color on Android?如何更改 Android 上的 CheckBox 焦点颜色?
【发布时间】:2022-01-04 14:07:39
【问题描述】:

我想更改复选框“轮廓”颜色,该颜色在选中复选框时可见,以便在使用带有键盘或方向键的应用程序时提高当前焦点项目的可见性。我该怎么做?

我的意思的图像: Focused CheckBox on Android

编辑:在找到我的意思的正确措辞(“波纹颜色”)后,我设法将其更改为:

<item name="colorControlHighlight">#00f</item>

但这仅适用于未选中的复选框。有谁知道如何将它应用于所有(也选中)复选框? Image of colorControlHighlight effect on checked and unchecked checkboxes

【问题讨论】:

    标签: android checkbox colors focus ripple


    【解决方案1】:

    感谢@special N9NE

    这可行:定义自己的涟漪ripple_bg.xml

    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
            android:color="@color/accent_26" />
    

    并将其设置为背景(全局):

    <resources>
        <style name="AppTheme" parent="Theme.AppCompat.DayNight">
            <!-- ... -->
    
            <!-- custom checkbox style to improve visibility on special (TV) devices -->
            <item name="android:checkboxStyle">@style/MyCheckBoxStyle</item>
        </style>
    
        <style name="MyCheckBoxStyle" parent="Widget.AppCompat.CompoundButton.CheckBox">
            <item name="android:background">@drawable/ripple_bg</item>
        </style>
    </resources>
    

    【讨论】:

      【解决方案2】:

      您可以查看此博客:AppCompat themes

      colorControlHighlight is for ripple color
      

      所以尝试创建一个 ThemeOverlay.AppCompat 主题,您将在其中设置所需颜色的值,并允许您更改该视图及其子视图的波纹颜色。

      要在主题中定位波纹,请使用此属性:

      android:colorControlHighlight

      【讨论】:

      • 谢谢,但使用&lt;item name="colorControlHighlight"&gt;#00f&lt;/item&gt; 只会更改未选中复选框的波纹颜色。如何更改选中复选框的波纹颜色?
      【解决方案3】:

      你可以使用主题属性:

      app:theme="@style/MyCheckboxStyle"
      

      然后将其添加到您的 style.xml 文件中:

      <style name="MyCheckboxStyle" parent="AppTheme">
          <item name="colorAccent">@color/colorAccent</item>  // color when checkbox is checked 
          <item name="android:textColorSecondary">@color/colorSecondary</item>  // when it is unchecked
      </style>
      

      【讨论】:

      • 谢谢,但是 colorAccent 改变了复选框本身的颜色,我想改变复选框聚焦时出现的波纹颜色。请查看我在问题中附加的图片。
      • @Schorschii 好的,看看this answer
      • 谢谢,这行得通。我会用这个创建一个新的答案。
      猜你喜欢
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多