2013-03-15 3 views
2

В настоящее время я пытаюсь установить пользовательский фон для экрана предпочтений. Я создал PreferenceActivityПользовательские настройки Android background

public class SettingsActivity extends PreferenceActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 
} 
} 

Вот мои предпочтения расположение

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <CheckBoxPreference 
     android:key="pref_Autoplay" 
     android:title="@string/pref_Autoplay" 
     android:summary="@string/pref_Autoplay_summ" 
     android:defaultValue="false"/> 
    <ListPreference 
     android:entryValues="@array/pref_Voice_values" 
     android:entries="@array/pref_Voice_entries" 
     android:key="pref_Voice" 
     android:summary="Choose male or female reader" 
     android:title="Readers voice" 
     android:defaultValue="female"/> 


</PreferenceScreen> 

Как я прочитал здесь, чтобы изменить фон, мне нужно, чтобы создать свою собственную тему со стилем. Вот он:

<style name="PrefsTheme" parent="@android:style/Theme.Black.NoTitleBar"> 
     <item name="android:windowBackground">@drawable/prefs_bg</item> 
     <item name="android:textColor">@color/prefs_bg</item> 
     <item name="android:listViewStyle">@style/listViewPrefs</item> 
    </style> 

    <style name="listViewPrefs" parent="@android:style/Widget.ListView"> 
     <item name="android:background">@color/prefs_bg</item> 
     <item name="android:cacheColorHint">@color/prefs_bg</item> 
     <item name="android:textColor">@color/prefs_bg</item> 
    </style> 

Все, что мне нужно, это установить некоторый фон изображения для списка предпочтений. Мое изображение @drawable/prefs_bg. Когда я установил windowBackground для изображения и background в некоторый цвет, список предпочтений использует цвет вместо изображения. Но когда я устанавливаю фон на @drawable/prefs_bg, появляется список предпосылок с моим изображением и диалоговое окно Radio Button для моего элемента ListPreference, также используется фон изображения.

Пожалуйста, помогите, как я могу установить фон изображения для списка настроек, не затрагивая фон диалогового окна с переключателем некоторых элементов настроек?

ответ

4

Хорошо. Я нашел, как решить свою проблему. Это я был виноват. Для установки предпочтений фона нужно только

<item name="android:windowBackground">@drawable/prefs_bg</item> 

Это один был ненужным:

<item name="android:background">@color/prefs_bg</item> 
<item name="android:cacheColorHint">@color/prefs_bg</item> 
2

Чтобы добавить динамический характер, это также будет работать. Добавьте это в PreferenceActivity. Мы также можем установить цвет фона так же.

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    setupActionBar(); 
    setupSimplePreferencesScreen(); 

    if (Build.VERSION.SDK_INT >= 16) 
     this.getListView().setBackground(getResources().getDrawable(...); 
} 
Смежные вопросы