Android PreferenceFragment 标题文本颜色

Android PreferenceFragment title text color

我使用的 AppCompatPreferenceActivity 对手机(无片段)使用简化的 UI PreferenceActivity,但对平板电脑使用 two-pane UI 和 PreferenceFragment。

到现在为止,我只使用了一个浅色主题(我的主题parent是Theme.AppCompat.Light)没问题,在two-pane模式下看起来像这样:

我现在正在实施深色主题,所以这次,我的主题 parent 是 "Theme.AppCompat"。

它看起来像这样:

如您所见,偏好片段的标题是深灰色背景上的黑色。如何设置此 "title" 颜色?

注意:在 Pre-Lollipop 上很容易,我们只需要将其与偏好 activity 主题相匹配即可:

<item name="android:textColorSecondary">#AAAAAA</item>

...但它不再适用于 Lollipop 和 Marshmallow。

有什么想法吗?

我通过覆盖类别主题对其进行了更改。

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    //other stuff
    <item name="preferenceTheme">@style/MyPrefTheme</item>
</style>

<style name="MyPrefTheme" parent="@style/PreferenceThemeOverlay">
    <item name="preferenceCategoryStyle">@style/CategoryStyle</item>
    <item name="android:preferenceCategoryStyle">@style/CategoryStyle</item>
</style>

<style name="CategoryStyle" parent="Preference.Category">
    <item name="android:layout">@layout/category_view</item>
</style>

layout/category_view.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@android:id/title"
          style="?android:attr/listSeparatorTextViewStyle"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:textColor="@color/white"
          android:layout_height="wrap_content"
    />

了解更多请访问Preference style.xml

你试过吗?

在styles.xml

<style name="PreferenceScreen" parent="YourApplicationThemeOrNone">
    <item name="android:textColor">@color/TitleColor</item>
</style>

在清单中

<activity
      android:name="MyPreferenceActivity"
      ...
      android:theme="@style/PreferenceScreen" >
</activity>

通过查看PreferenceActivity代码,最终发现右侧窗格中的标题不是preference片段的一部分,而是"breadcrumb".

片段

通过使用此关键字 ("breadcrumb") 搜索答案,我看到有人已经问过同样的问题,被接受的答案很好,详细说明了如何做,以及为什么它是一个比仅仅改变样式中的颜色更复杂。

问题如下:Changing the highlight and title color for fragments in PreferenceActivity

并直接link回答:https://whosebug.com/a/27078485/1534408