Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListPreference文本颜色_Android_Android Preferences - Fatal编程技术网

Android ListPreference文本颜色

Android ListPreference文本颜色,android,android-preferences,Android,Android Preferences,我很难设计一个列表偏好 我应用了一个主主题,它声明了一个preferenceTheme,并且两个主题都链接到一个dialogTheme(分别是alertDialogTheme)。除了项目的文本颜色不改变外,其他所有文本的颜色都会改变。我不能依赖解决方法,因为我使用的是v7首选项,因此无法覆盖自定义类中的对话框方法。 对我来说,行似乎忽略了文本颜色值,但可能其他人对此有解决方案。否则这可能是一个bug 主要风格: <style name="AppTheme" parent="Theme.Ap

我很难设计一个列表偏好

我应用了一个主主题,它声明了一个preferenceTheme,并且两个主题都链接到一个dialogTheme(分别是alertDialogTheme)。除了项目的文本颜色不改变外,其他所有文本的颜色都会改变。我不能依赖解决方法,因为我使用的是v7首选项,因此无法覆盖自定义类中的对话框方法。
对我来说,行似乎忽略了文本颜色值,但可能其他人对此有解决方案。否则这可能是一个bug

主要风格:

<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>

@颜色/首选项\u主\u颜色
@颜色/首选项\u主\u颜色
@颜色/首选项\u主\u颜色
@颜色/首选项\u主\u颜色
@颜色/首选项\u主\u颜色
@风格/对话主题
@风格/对话主题
@风格/偏好主题

对话主题:

<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>

#Eeeee
#Eeeee
#Eeeee
#Eeeee
#Eeeee
#Eeeee
#Eeeee
#Eeeee


这就是它的外观。文本应该是
#EEEEEE
。我已经剪掉了它,但是文本颜色应用于每个给定的样式。

您做的一切都是对的,除了一件事:在覆盖
textColorAlertDialogListItem
时不要使用
android
前缀,因为这不是
AlertDialog
的框架版本

此语句通常适用于属于支持小部件/视图的几乎所有属性。原因很简单:并非所有属性都在旧平台上可用。例如API 21中引入的android:colorControlActivated。AppCompat库声明了自己的
colorControlActivated
,因此它也可以在较旧的API级别上使用。在这种情况下,开发人员在主题中定义样式时不应使用
android
前缀,因为这将指向属性的平台版本,而不是AppCompat版本

TL;DR:除非必须(即,您会遇到编译错误),否则不要将
android
前缀用于支持小部件



备注:我已经创建了一个用于支持首选项-v7库中烦人的东西的链接,您可能想查看它。

对于单选按钮,也可以在您的样式中添加
#000000

小心点,这不是android:colorAccent,而是你说到点子上了。我在大约两个小时内尝试了很多东西,但没有真正想到这一点。谢谢你的解释,我不知道为什么
android:
前缀有时会丢失。谢谢!节省了我很多时间,事实上我自己永远也无法发现:)