2

現在、設定画面にカスタム背景を設定しようとしています。私が作成しましたPreferenceActivity

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のラジオボタンダイアログも画像の背景を使用しています。ListPreference

一部の設定項目のラジオボタンダイアログの背景に影響を与えずに、設定リストの画像の背景を設定するにはどうすればよいですか?

4

2 に答える 2

4

Ok。私は自分の問題を解決する方法を見つけました。私の責任です。プリファレンスの背景を設定するには、

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

これは不要でした:

<item name="android:background">@color/prefs_bg</item>
<item name="android:cacheColorHint">@color/prefs_bg</item>
于 2013-03-19T14:15:35.427 に答える
2

動的な性質を追加するには、これも機能します。これをPreferenceActivityに追加します。背景色も同様に設定できます。

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

    if (Build.VERSION.SDK_INT >= 16)
        this.getListView().setBackground(getResources().getDrawable(...);
}
于 2014-12-30T07:59:14.777 に答える