2014-03-22 4 views
0

Я пытаюсь изменить тему диалогов предпочтений.Android Preference Dialog Тема не меняется

Моя тема:

<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> 

Preference активность:

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

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.