将颜色更改为设置组之间的分隔线

Posted

技术标签:

【中文标题】将颜色更改为设置组之间的分隔线【英文标题】:Change color to dividers between settings groups 【发布时间】:2019-09-29 05:06:07 【问题描述】:

我的preferences.xml 文件如下所示:

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

<android.support.v7.preference.PreferenceCategory
    android:key="themeCategoryKey"
    android:title="Theme">

    <SwitchPreferenceCompat
        android:key="themeKey"
        android:title="Turn on dark theme" />

</android.support.v7.preference.PreferenceCategory>

<android.support.v7.preference.PreferenceCategory
    android:key="locationKeyCategory"
    android:title="Location">

    <EditTextPreference
        android:name="EditText Preference2"
        android:key="locationKey"
        android:summary="Enter default location for home screen"
        android:title="Location" />

</android.support.v7.preference.PreferenceCategory>

</PreferenceScreen>

我想要实现的是更改偏好组之间分隔线的颜色。我需要它,因为当我将主题颜色从深色更改为具有白色背景颜色的浅色主题时,分隔线不明显,因为它们是白色的,尽管分隔线在深色主题中很明显,因为背景颜色是黑色。在下一节中,我提供了 style.xml。

<resources>

<!-- Dark Theme -->
<style name="BlackTheme" parent="Theme.AppCompat">
    <item name="colorPrimaryDark">@color/backgroundDarkTheme</item>
    <item name="colorPrimary">#171717</item>
    <item name="colorAccent">@color/colorAccentDarkTheme</item>
    <item name="android:windowBackground">@color/colorPrimaryDarkerDark</item>
    <item name="android:itemBackground">@color/colorPrimaryDarkerDark</item>
    <item name="android:textColor">@color/textColorDarkTheme</item>
    <item name="android:divider">@null</item>
</style>

<!-- Orange Theme Default One -->
<style name="OrangeTheme" parent="Theme.AppCompat">  <!-- this is light theme -->
    <item name="colorPrimaryDark">#e95304</item>
    <item name="colorPrimary">@color/colorAccentOrangeTheme</item>
    <item name="colorAccent">@color/colorAccentOrangeTheme</item>
    <item name="android:windowBackground">@color/backgroundOrangeTheme</item>
    <item name="android:itemBackground">@color/toolbarItemBackgroundLight</item>
    <item name="android:itemTextAppearance">@style/menu_item_color</item>
    <item name="android:textColor">@color/textColorOrangeTheme</item>
    <item name="android:textColorSecondary">@color/textColorOrangeTheme</item>
    <item name="android:divider">@color/textColorOrangeTheme</item>  <!-- this is black color btw -->
</style>

<!-- Menu Item Text Color Orange Theme -->
<style name="menu_item_color">
    <item name="android:textColor">@color/backgroundOrangeTheme</item>
</style>

</resources>

我在这里尝试过,但没有运气。

  <item name="android:divider">@color/textColorOrangeTheme</item>

希望你们了解我打算做什么以及如何实现我的目标。对于那些不知道我想要设计哪些分隔线的人,图片在下方

这是没有分隔线的图片

【问题讨论】:

【参考方案1】:

您能否试试这个,代替您的styles.xml 中的“OrangeTheme”。这对我有用,只需检查这是否是您需要的?

<style name="OrangeTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimaryDark">#e95304</item>
        <item name="colorPrimary">@color/colorAccentOrangeTheme</item>
        <item name="colorAccent">@color/colorAccentOrangeTheme</item>
        <item name="android:itemTextAppearance">@style/menu_item_color</item>
        <item name="android:textColor">@color/textColorOrangeTheme</item>
        <item name="android:textColorSecondary">@color/textColorOrangeTheme</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
    </style>

【讨论】:

我试过了,但还是一样,我上传了分隔线不可见的图片 它在工作 Monika,我想诀窍就在preferenceTheme 中。抱歉延迟回复我一直在睡觉,感谢您的时间和精力。额外的问题,是否可以设置分隔符的样式,例如从左侧设置起始位置并在结束侧设置相同的位置?【参考方案2】:

要自定义分隔线,您需要将SettingsTheme 应用于您的设置活动。

<style name="SettingsTheme" parent="Theme.AppCompat">
    <item name="preferenceTheme">@style/PreferenceTheme</item>
</style>

<style name="PreferenceTheme" parent="PreferenceThemeOverlay">
    <item name="preferenceFragmentCompatStyle">@style/FragmentPreferenceStyle</item>
</style>

<style name="FragmentPreferenceStyle" parent="PreferenceFragment.Material">
    <item name="android:divider">@drawable/list_separator_dark</item>
</style>

list_separator_dark.xml 可绘制资源文件应如下所示:

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

【讨论】:

以上是关于将颜色更改为设置组之间的分隔线的主要内容,如果未能解决你的问题,请参考以下文章

将分隔符颜色更改为背景或从NSTableView中删除它

Android:如何更改日期选择器分隔线的颜色?

如何更改 Android ListView 分隔线的颜色?

更改 emacs 中的高亮线颜色

Python:将浮动值更改为颜色

UITableView 奇怪的分隔线颜色