我很难尝试设计一个ListPreference。
我应用了一个主主题,它声明了一个preferenceTheme,它们都链接到一个dialogTheme (和alertDialogTheme )。它的工作原理是,项目的文本颜色不会改变--但是所有其他文本的颜色都会改变。我不能依赖解决方案,因为我使用的是v7首选项,因此不能覆盖自定义类中的对话框方法。
对我来说,行似乎忽略了文本的颜色值,但也许其他人有解决方案。否则这可能是个窃听器?
主要风格:
<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>PreferenceTheme:
<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>DialogTheme:
<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的方式。我已经剪短了它,但是文本的颜色被应用到每个给定的样式中。
发布于 2017-09-05 19:48:45
您做得很好,除了一件事:在重写android时不要使用textColorAlertDialogListItem前缀,因为这不是AlertDialog的框架版本。
这个语句对于几乎所有属于支持小部件/视图的属性都是正确的。原因很简单:并不是所有的属性都可以在旧的平台上使用。在API 21中引入的android:colorControlActivated就是这样的例子。AppCompat库声明了自己的colorControlActivated,因此它也可以在旧的API级别上使用。在这种情况下,开发人员在定义主题中的样式时不应该使用android前缀,因为这将指向属性的平台版本而不是AppCompat版本。
TL;DR:不使用支持小部件的android前缀,除非您必须使用(即您得到编译错误)。
P.S.:我为支持首选项(V7 Lib)创建了一个固定/扩展,这是您可能想要查看的烦人之处。
发布于 2017-09-27 18:47:53
同样对于单选按钮的颜色,添加<item name="colorAccent">#000000</item>到您的风格。小心点,这不是android:colorAccent,而是colorAccent
https://stackoverflow.com/questions/46061699
复制相似问题