ListPreference 文本颜色
ListPreference text color
我很难尝试设置 ListPreference 的样式。
我应用了一个主主题,它声明了一个 preferenceTheme 并且它们都 link 到一个 dialogTheme(分别是 alertDialogTheme)。它的工作原理除了项目的文本颜色不会改变 - 但所有其他文本的颜色都会改变。我不能依赖解决方法,因为我使用的是 v7 首选项,因此无法覆盖自定义 class.
中的对话框方法
对我来说,这些行似乎忽略了文本颜色值,但也许其他人对此有解决方案。否则这可能是一个错误?
主要风格:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- [...] -->
<!-- Some color values -->
<item name="android:dialogTheme">@style/DialogTheme</item>
<item name="android:alertDialogTheme">@style/DialogTheme</item>
<item name="dialogTheme">@style/DialogTheme</item>
<item name="alertDialogTheme">@style/DialogTheme</item>
<item name="preferenceTheme">@style/PreferenceTheme</item>
</style>
偏好主题:
<style name="PreferenceTheme" parent="PreferenceThemeOverlay.v14.Material">
<!-- [...] -->
<!-- Some color values -->
<item name="android:textColor">@color/preference_primary_color</item>
<item name="android:textColorPrimary">@color/preference_primary_color</item>
<item name="android:textColorSecondary">@color/preference_primary_color</item>
<item name="android:textColorHighlight">@color/preference_primary_color</item>
<item name="android:editTextColor">@color/preference_primary_color</item>
<item name="android:dialogTheme">@style/DialogTheme</item>
<item name="android:alertDialogTheme">@style/DialogTheme</item>
<item name="preferenceTheme">@style/PreferenceTheme</item>
</style>
对话主题:
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:textColor">#EEEEEE</item>
<item name="android:textColorPrimary">#EEEEEE</item>
<item name="android:textColorSecondary">#EEEEEE</item>
<item name="android:textColorHighlight">#EEEEEE</item>
<item name="android:textColorTertiary">#EEEEEE</item>
<item name="android:textColorAlertDialogListItem">#EEEEEE</item>
<item name="android:editTextColor">#EEEEEE</item>
<item name="color">#EEEEEE</item>
</style>
looks.The 文本应该是这样的 #EEEEEE
。我已经剪掉了它,但是文本颜色应用于每个给定的样式。
你做的一切都正确,除了一件事:在覆盖 textColorAlertDialogListItem
时不要使用 android
前缀,因为这不是 AlertDialog
.
的框架版本
此声明通常适用于几乎所有属于支持小部件/视图的属性。原因很简单:并非所有属性在旧平台上都可用。这样的例子是在 API 21 中引入的 android:colorControlActivated
。AppCompat lib 声明了它自己的 colorControlActivated
所以它也可以在旧的 API 级别上使用。在这种情况下,开发人员在主题中定义样式时不应使用 android
前缀,因为这将指向属性的平台版本而不是 AppCompat 版本。
TL;DR: 不要对支持小部件使用 android
前缀,除非你必须这样做(即出现编译错误)。
P.S.: 我已经创建了一个 fix / extension 来支持 preferences-v7 lib 的烦人的东西,你可能想检查一下。
还可以为单选按钮颜色添加 <item name="colorAccent">#000000</item>
到您的样式。
注意,不是 android:colorAccent
而是 colorAccent
我很难尝试设置 ListPreference 的样式。
我应用了一个主主题,它声明了一个 preferenceTheme 并且它们都 link 到一个 dialogTheme(分别是 alertDialogTheme)。它的工作原理除了项目的文本颜色不会改变 - 但所有其他文本的颜色都会改变。我不能依赖解决方法,因为我使用的是 v7 首选项,因此无法覆盖自定义 class.
中的对话框方法
对我来说,这些行似乎忽略了文本颜色值,但也许其他人对此有解决方案。否则这可能是一个错误?
主要风格:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- [...] -->
<!-- Some color values -->
<item name="android:dialogTheme">@style/DialogTheme</item>
<item name="android:alertDialogTheme">@style/DialogTheme</item>
<item name="dialogTheme">@style/DialogTheme</item>
<item name="alertDialogTheme">@style/DialogTheme</item>
<item name="preferenceTheme">@style/PreferenceTheme</item>
</style>
偏好主题:
<style name="PreferenceTheme" parent="PreferenceThemeOverlay.v14.Material">
<!-- [...] -->
<!-- Some color values -->
<item name="android:textColor">@color/preference_primary_color</item>
<item name="android:textColorPrimary">@color/preference_primary_color</item>
<item name="android:textColorSecondary">@color/preference_primary_color</item>
<item name="android:textColorHighlight">@color/preference_primary_color</item>
<item name="android:editTextColor">@color/preference_primary_color</item>
<item name="android:dialogTheme">@style/DialogTheme</item>
<item name="android:alertDialogTheme">@style/DialogTheme</item>
<item name="preferenceTheme">@style/PreferenceTheme</item>
</style>
对话主题:
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:textColor">#EEEEEE</item>
<item name="android:textColorPrimary">#EEEEEE</item>
<item name="android:textColorSecondary">#EEEEEE</item>
<item name="android:textColorHighlight">#EEEEEE</item>
<item name="android:textColorTertiary">#EEEEEE</item>
<item name="android:textColorAlertDialogListItem">#EEEEEE</item>
<item name="android:editTextColor">#EEEEEE</item>
<item name="color">#EEEEEE</item>
</style>
looks.The 文本应该是这样的 #EEEEEE
。我已经剪掉了它,但是文本颜色应用于每个给定的样式。
你做的一切都正确,除了一件事:在覆盖 textColorAlertDialogListItem
时不要使用 android
前缀,因为这不是 AlertDialog
.
此声明通常适用于几乎所有属于支持小部件/视图的属性。原因很简单:并非所有属性在旧平台上都可用。这样的例子是在 API 21 中引入的 android:colorControlActivated
。AppCompat lib 声明了它自己的 colorControlActivated
所以它也可以在旧的 API 级别上使用。在这种情况下,开发人员在主题中定义样式时不应使用 android
前缀,因为这将指向属性的平台版本而不是 AppCompat 版本。
TL;DR: 不要对支持小部件使用 android
前缀,除非你必须这样做(即出现编译错误)。
P.S.: 我已经创建了一个 fix / extension 来支持 preferences-v7 lib 的烦人的东西,你可能想检查一下。
还可以为单选按钮颜色添加 <item name="colorAccent">#000000</item>
到您的样式。
注意,不是 android:colorAccent
而是 colorAccent