android PreferenceScreen preference偏好顯示類的使用介紹
PreferenceScreen preference是偏好,首選的意思,PreferenceScreen我的翻譯成 「偏好顯示」,明白這個意思就好,就是說根據特色靈活的定義顯示內容風格,一個屏幕能夠包含多個風格,像系統自帶的聲音設置界面。
實現這種顯示效果其實很簡單,只須要藉助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="這是一個開關按鈕" />
- </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>
歡迎關注本站公眾號,獲取更多信息