如何更改支持包的偏好对话框颜色?
我能够在没有支持包的情况下自定义首选项的对话框主题。由于我切换到支持包(我的偏好片段现在延伸PreferenceFragmentCompat
而不是PreferencesFragment
)我无法更改颜色。如何更改支持包的偏好对话框颜色?
到目前为止,我已将此添加到我的主题:
<item name="preferenceTheme">
@style/MyPreferenceTheme
</item>
<item name="android:dialogTheme">@style/DialogStyle</item>
<item name="android:alertDialogTheme">@style/DialogStyle</item>
<item name="android:dialogPreferenceStyle">@style/DialogStyle</item>
// ...
<style name="MyPreferenceTheme" parent="PreferenceThemeOverlay.v14.Material">
<!--<style name="MyPreferenceTheme">-->
<item name="colorAccent">@android:color/white</item>
<item name="android:background">@color/bg0</item>
<item name="android:textColor">@color/fg0</item>
<item name="android:windowBackground">@color/bg0</item>
<item name="android:windowTitleStyle">@style/WindowTitleStyle</item>
<item name="android:keyTextColor">@color/fg0</item>
<item name="android:textColorAlertDialogListItem">@color/fg0</item>
<item name="android:textColorPrimary">@color/fg0</item>
<item name="android:textColorSecondary">@color/fg0</item>
<item name="android:textColorTertiary">@color/fg0</item>
<item name="colorControlNormal">@color/fg0</item>
<item name="colorControlActivated">@color/fg0</item>
<item name="colorControlHighlight">@color/fg0</item>
</style>
<style name="DialogStyle" parent="Theme.AppCompat.Dialog">
<item name="colorAccent">@android:color/white</item>
<item name="android:background">@color/bg0</item>
<item name="android:textColor">@color/fg0</item>
<item name="android:windowTitleStyle">@style/WindowTitleStyle</item>
<item name="android:windowBackground">@color/bg0</item>
<item name="android:keyTextColor">@color/fg0</item>
<item name="android:textColorAlertDialogListItem">@color/fg0</item>
<item name="android:textColorPrimary">@color/fg0</item>
<item name="android:textColorSecondary">@color/fg0</item>
<item name="android:textColorTertiary">@color/fg0</item>
<item name="colorControlNormal">@color/fg0</item>
<item name="colorControlActivated">@color/fg0</item>
<item name="colorControlHighlight">@color/fg0</item>
</style>
<style name="WindowTitleStyle" parent="TextAppearance.AppCompat.Title">
<item name="android:textColor">@color/fg0</item>
</style>
我要的是一个黑色的背景和白色文字/部件。 fg0是白色,bg0是黑色。但对话框显示白色的bg和黑色文本。标题是不可见的(我认为它是白色的,这是正确的)。
在绝望的行为中,我也尝试过使用对话框的自定义布局,setDialogLayoutResource
- 我想复制Android用于对话框的资源并更改颜色。但我不知道Android资源的位置。在首选项的源代码中,没有明确提及布局文件,除此之外我发现了https://android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/res/layout/和https://android.googlesource.com/platform/frameworks/support/+/master/v7/preference/res/layout/,但我怎么知道它是哪一个?
如何调整主题?这个简单的任务不能这么复杂!
也请解释什么路径是从“我想设置偏好对话框的背景颜色为黑色”到我必须在XML中设置的确切属性。我在哪里可以找到:1.哪个对话框是这样的,2.它具有哪些属性3.设置这些属性的效果是什么。 (最好不需要挖掘源代码)。
文档告诉我们看源代码,在R.attr但除了搜索名称包含“对话框”或“偏好”我不知道该怎么做。我迄今尝试过的所有属性都没有帮助。
相关:没有人使用(或恢复)PreferenceFragmentCompat
?难以找到关于这方面的信息,而且似乎也没有人知道。你用什么来代替? (这些问题仅限于评论)。
我发现这个问题:
我用
<item name="android:alertDialogTheme">@style/DialogStyle</item>
,它应该是
<item name="alertDialogTheme">@style/DialogStyle</item>
很让人讨厌,特别是Android的Studio不捕获这些错误,甚至autocompletes android:alertDialogTheme
。