Android Preference Dialog主题不变

时间:2014-03-22 17:40:24

标签: android preference

我正在尝试更改首选项对话框的主题。

我的主题:

<style name="Theme.Preferences.Dialog" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:divider">@color/text_green</item>
    <item name="android:textColorPrimary">@color/text_green</item>
    <item name="android:background">#fff0f0f0</item>
</style>

偏好活动:

public class SettingsPrefActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        addPreferencesFromResource(R.xml.preferences);
        setTheme(R.style.Theme_Preferences_Dialog);

它正在更改首选项对象而不是首选项对话框对象。

示例:这来自我的偏好活动。它不应该是绿色的

SS from Preference

这是我的对话框。分隔符和标题应为绿色。

ss of Pref Dialog

1 个答案:

答案 0 :(得分:-1)

在给布局充气之前必须先调用{p> setTheme()。这通常发生在setContentView()中,但对于PreferenceActivity,它出现在addPreferencesFromResource()中。

简而言之,请将onCreate()的内容更改为:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        
    setTheme(R.style.Theme_Preferences_Dialog);
    addPreferencesFromResource(R.xml.preferences);
    ...
}

就个人而言,我更喜欢通过描述清单中的主题来使这种逻辑与我的视图(我的模型或活动代码之外)更紧密地结合在一起。我建议你看一下Applying Themes and Styles to the UI的建议。例如,通过使用:

<application android:theme="@style/CustomTheme">

或者:

<activity android:theme="@android:style/Theme.Preferences">

另请注意,现在不鼓励使用PreferenceActivity,而是支持PreferenceFragment。