问题
I have a preference screen for my application and in the manifest I have given it a theme using:
android:theme="@android:style/Theme.Light.WallpaperSettings"
However when I nest another preference screen inside this one such as:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/setting_title"
android:key="...">
<PreferenceCategory
android:title="@string/title_themes"
>
<PreferenceScreen
android:title="@string/title_themes_opt"
>
<ListPreference
android:key="Setting_BG"
android:title="@string/setting_bg"
android:summary="@string/setting_bg_summary"
android:entries="@array/bg_titles"
android:defaultValue="0"
android:entryValues="@array/bg_values" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
The nested preference screen loses the theme of the parent. How can this be prevented? Thanks in advance.
回答1:
This is a bug in android see the Bug Report.
回答2:
Just ran into this problem.
While the suggestion in the bug report is to create your own custom style and set the listview background, we found it easier to create a separate activity for each preference screen. This allowed us to set the Theme.Light to each screen with no issue.
Not a great fix, but it works.
来源:https://stackoverflow.com/questions/2755005/nested-preference-screens-lose-theming