實現這樣的顯示效果事實上非常easy。僅僅須要借助PreferenceScreen類就可以。在項目資源文件里新建xml目錄。在里面新建preferences.xml文件.
根元素為PreferenceScreen 代表顯示一整個屏幕。內部嵌套PreferenceCategory標簽,表示偏好類別,在PreferenceCategory標簽內部能夠隨便存放復選框,輸入框,列表等顯示控件.可包括的控件內容在android.preference包下可查閱.xml文件編寫好后。須要載入到activity中,對於偏好顯示的xml載入。能夠使用PreferenceActivity中的addPreferencesFromResource(),所以Activity須要繼承PreferenceActivity.既然顯示的屏幕中包括復選框,輸入框的控件,我們必定對選擇與否,輸入框內容感興趣。我們要如何獲取屏幕的內容呢?
復寫activity中的onPreferenceTreeClick 方法。在對屏幕顯示的內容進行操作時,會觸發此方法。在方法內部通過調用
- SharedPreferences contentPreference = preference.getSharedPreferences();
- boolean checkbox_toggle = contentPreference.getBoolean("checkbox_preference", false);
- String animalName = contentPreference.getString("edittext_preference", "default");
就可以得到屏幕上輸入的內容。與使用SharedPreference對象一樣,通過key-value 的形式獲取,當中key是xml控件標簽中key屬性相應的值.
顯示效果:

相應xml文件:
- <?xml version="1.0" encoding="utf-8"?
>
- <PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory
- android:title="顯示一排偏好">
- <CheckBoxPreference
- android:key="checkbox_preference"
- android:title="開關偏好"
- android:summary="這是一個開關button" />
- </PreferenceCategory>
- <PreferenceCategory
- android:title="基於對話框的偏好">
- <EditTextPreference
- android:key="edittext_preference"
- android:title="文本輸入偏好"
- android:summary="使用一個文本框對話框"
- android:dialogTitle="輸入你的寵物" />
- <ListPreference
- android:key="list_preference"
- android:title="列表偏好"
- android:summary="使用一個列表對話框"
- android:entries="@array/entries_list_preference"
- android:entryValues="@array/entryvalues_list_preference"
- android:dialogTitle="選擇一個" />
- </PreferenceCategory>
- <PreferenceCategory
- android:title="啟動偏好">
- <PreferenceScreen
- android:key="screen_preference"
- android:title="屏幕"
- android:summary="顯示還有一個偏好屏幕">
- <!-- You can place more preferences here that will be shown on the next screen. -->
- <CheckBoxPreference
- android:key="next_screen_checkbox_preference"
- android:title="開關偏好"
- android:summary="還有一個屏幕上的偏好" />
- </PreferenceScreen>
- <PreferenceScreen
- android:title="意圖偏好"
- android:summary="通過意圖啟動一個Activity">
- <intent android:action="android.intent.action.VIEW"
- android:data="http://www.android.com" />
- </PreferenceScreen>
- </PreferenceCategory>
- <PreferenceCategory
- android:title="偏好屬性">
- <CheckBoxPreference
- android:key="parent_checkbox_preference"
- android:title="父開關"
- android:summary="這是一個父開關" />
- <CheckBoxPreference
- android:key="child_checkbox_preference"
- android:dependency="parent_checkbox_preference"
- android:layout="?
android:attr/preferenceLayoutChild"
- android:title="子開關"
- android:summary="這是一個子開關" />
- </PreferenceCategory>
- </PreferenceScreen>