迁移至PreferenceFragmentCompat后,如何修改SwitchPreferenceCompat点击高亮颜色?
哈哈,这个高亮颜色的坑我之前踩过!白色背景下Preference的默认高亮确实太不显眼了,给你几个实用的解决办法,按需选就行:
方法一:在你的PreferenceTheme里自定义高亮样式
你已经有PreferenceTheme了,直接在里面添加属性覆盖默认效果就行:
<style name="PreferenceTheme" parent="@style/PreferenceThemeOverlay"> <!-- 适配新版的点击高亮 --> <item name="selectableItemBackground">@drawable/custom_preference_highlight</item> <!-- 兼容旧系统的长按/点击高亮 --> <item name="android:selectableItemBackground">@drawable/custom_preference_highlight</item> </style>
接下来在res/drawable目录下创建custom_preference_highlight.xml,自定义波纹的颜色:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/your_target_highlight_color"> <!-- 替换成你想要的颜色,比如浅灰或者主题色 --> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="@color/your_target_highlight_color" /> </shape> </item> </ripple>
方法二:全局统一设置高亮颜色(更省心)
如果想让整个App的可点击控件高亮风格统一,直接在你的App主题里配置colorControlHighlight就行,不用单独写drawable:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- 其他主题属性... --> <item name="colorControlHighlight">@color/your_target_highlight_color</item> <!-- 兼容Android 5.0以下系统 --> <item name="android:colorControlHighlight">@color/your_target_highlight_color</item> </style>
这个方法最省事,一次设置全App生效,适合追求风格统一的场景。
方法三:单独给某个SwitchPreferenceCompat改高亮
如果只想调整特定设置项的高亮,不想影响其他Preference,直接给目标SwitchPreferenceCompat设置背景:
<SwitchPreferenceCompat android:key="your_preference_key" android:title="你的设置标题" android:background="@drawable/custom_preference_highlight" />
这里用的还是方法一里的custom_preference_highlight.xml,精准控制单个设置项的效果。
小提示
选颜色的时候记得和白色背景保持足够对比度,比如用#E0E0E0这种浅灰色,或者你的App主题色,这样点击反馈才清晰,用户能明确感知到交互操作~
内容的提问来源于stack exchange,提问作者DiscDev
相关产品推荐
相关产品推荐

