android PreferenceScreen preference偏好顯示類的使用介紹,preferencescreen
PreferenceScreen preference是偏好,首選的意思,PreferenceScreen個人翻譯成 “偏好顯示”,明白這個意思就好,就是說根據特點靈活的定義顯示內容風格,一個螢幕可以包含多個風格,像系統內建的聲音設定介面。
實現這種顯示效果其實很簡單,只需要藉助PreferenceScreen類即可。在項目資源檔中建立xml檔案夾,在裡面建立preferences.xml檔案.
根項目為PreferenceScreen 代表顯示一整個螢幕,內部嵌套PreferenceCategory標籤,表示偏好類別,在PreferenceCategory標籤內部可以隨便存放複選框,輸入框,列表等顯示控制項.可包含的控制項內容在android.preference包下可查閱.xml檔案編寫好後,需要載入到activity中,對於偏好顯示的xml載入,可以使用PreferenceActivity中的addPreferencesFromResource(),所以Activity需要繼承PreferenceActivity.既然顯示的螢幕中包含複選框,輸入框的控制項,我們必然對選擇與否,輸入框內容感興趣,我們要怎樣擷取螢幕的內容呢?
複寫activity中的onPreferenceTreeClick 方法,在對螢幕顯示的內容進行操作時,會觸發此方法,在方法內部通過調用
Java代碼
- 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檔案:
Java代碼
- <?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="這是一個開關按鈕" />
- </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>