Android PreferenceFragment appcompat样式被忽略< 21

时间:2015-09-23 21:23:52

标签: android

我正在使用PreferenceActivity将PreferenceFragments添加到我的布局中。 PreferenceActivity使用自定义样式与父Theme.AppCompat.Light.NoActionBar,我已更新colorPrimary,colorPrimaryDark和colorAccent。在棒棒糖上,首选项屏幕按预期显示,使用适当的颜色和文本样式,但是,在KitKat上,我使用的样式似乎完全被忽略。

最初我认为问题是PreferenceActivity扩展了Activity而不是AppCompatActivity,但我甚至尝试在我的偏好活动中使用AppCompatDelegate,但这没有帮助。为什么< 21设备会忽略首选项活动中的样式?

1 个答案:

答案 0 :(得分:0)

我认为您可以通过为对话框创建自定义样式来解决问题,然后使用dialogThemealertDialogTheme属性在基本应用主题中引用它。

<!-- Your base app theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        ...
       <item name="dialogTheme">@style/MyDialogStyle</item>
       <item name="alertDialogTheme">@style/MyDialogStyle</item>
</style>

<!-- Custom style for dialogs -->    
<style name="MyDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
            <item name="colorAccent">@color/accent_pink_a200</item>
            <item name="android:textColorPrimary">@color/white</item>
            <item name="android:textColorSecondary">@color/white</item>
            <item name="android:background">@color/primary_deepPurple_500</item>
            <item name="textColorAlertDialogListItem">@color/white</item>
            <item name="android:textAppearanceButton">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item>
</style>

您还可以根据需要在自定义样式中添加其他属性,例如colorPrimarycolorPrimaryDark