我可以在没有支持包的情况下自定义首选项的对话框主题。由于我切换到支持包(我的偏好片段现在扩展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/之外,我怎么知道它是什么?
如何调整主题?这个简单的任务可能太复杂了!
另外请解释路径的确切内容&#34;我想将首选项对话框的背景颜色设置为黑色&#34;我必须在XML中设置的确切属性。我在哪里可以找到:1。这是哪个对话框,2。它有什么属性3.设置这些属性有什么影响。 (最好不必深入挖掘源代码)。
文档告诉您查看来源,例如在R.attr中,但搜索包含&#34;对话框&#34;的名称除外或者&#34;偏好&#34;我不知道该怎么做。到目前为止,我尝试的所有属性都没有帮助。
相关:没有人使用(或重新设计)PreferenceFragmentCompat
吗?难以找到关于此的信息,似乎也没有人知道。你用的是什么? (这些问题仅供评论)。
答案 0 :(得分:1)
我发现了问题:
我正在使用
<p id="mybluewords">
Yo
</p>
它应该是
<item name="android:alertDialogTheme">@style/DialogStyle</item>
非常恼人,特别是Android Studio无法捕获这些错误,甚至自动填充<item name="alertDialogTheme">@style/DialogStyle</item>
。