如何在Android中将PreferenceScreen设置为其他布局

时间:2016-02-24 14:10:20

标签: android xml android-layout

我想在我的应用程序中使用PreferenceScreen,并在 res / xml / setting_preference.xml 中为此活动创建XML布局。但是这个XML布局非常简单,我想在另一个布局中使用这个布局 例如:我想将 setting_preference.xml 用于 setting_activity.xml ,setting_activity.xml路径为 res / layout / setting_activity.xml

我怎么能? setting_preference XML代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:key="setting_title_title_category"
        android:title="Title options">

    <CheckBoxPreference
        android:id="@+id/setting_title_show_id"
        android:key="setting_title_show"
        android:title="Show Main Title"
        android:summary="Show/hide MainPage title"
        android:checked="true"/>

    <EditTextPreference
        android:key="setting_title_text"
        android:title="Set Main Title"
        android:summary="Change MainPage title"
        android:dialogTitle="Change Title"
        android:dialogMessage="Change title please..."/>

    </PreferenceCategory>

    <PreferenceCategory
        android:key="setting_title_font_category"
        android:title="Font options">

        <ListPreference
            android:key="setting_title_font_color"
            android:title="Title font colors"
            android:summary="Change title font colors"
            android:entries="@array/colors"
            android:entryValues="@array/colors"
            android:dialogTitle="Change font color" />

    </PreferenceCategory>

    <RingtonePreference
        android:title="tes"/>

</PreferenceScreen>

setting_activity XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tellfa.nikandroid.mytestdbproject.SettingPage">

</RelativeLayout>

设置网页代码:

public class SettingPage extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        if (key.equals("setting_title_font_color")) {
            // get preference by key
            Preference pref = findPreference(key);
            // do your stuff here
        }

        if (key.equals("setting_title_show")){

            Preference pref = findPreference(key);
        }
    }

    public static class MyPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.setting_prefrences);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在layout xml文件中添加要在其中加载xml首选项文件的frameLayout,并在该活动中实现PreferenceFragment。