Android 設置是每個App必不可小的東西,看似很簡單,但是初學不熟悉的很花時間去研究,特別樣式兼容方面,以及有自定義設置的需求,下面是對用法做一個總結
Preference結構
界面結構看下圖
界面主要由PrefercenScreen、PreferenceCategory和Preference三個主要部分組成
- PrefercenScreen最根的部分;
- PreferenceCategory是每個設置的分組;
- Preference是具體到每個設置元素;
XML文件
XML結構層級大致如圖
<android.support.v7.preference.PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.preference.PreferenceCategory
android:title="preference v7">
<android.support.v7.preference.CheckBoxPreference
android:defaultValue="false"
android:key="key_checkbox"
android:summaryOff="@string/theme_light"
android:summaryOn="@string/theme_dark"
android:title="Checkbox"
/>
</android.support.v7.preference.PreferenceCategory>
</android.support.v7.preference.PreferenceScreen>
類庫
由於Android版本升級,Preference加上原生的供有四個版本類庫,根據API的最低版本使用相應的類庫,如果你的最低版本是11,使用PreferenceFragment的話就可不使用兼容庫。下面對每個包層次整理一下
android.preference
PreferenceFragment
如果你的安卓最低版本面向11以上的,可以直接使用這個包為基礎
android.support.v7.preference
android.support.v14.preference
android.support.v17.preference
這個包主要面向電視,暫時不深入研究,具體特性遲點再補充
Preference介紹
Preference
-
Preference 是所有設置項目的基類,很多屬性都從這個類派生出來。
它有android.preference.Preference和 android.support.v7.preference.Preference兩個部分,大致用法相同,詳細請參考文檔; -
從文檔可了解到android.preference.Preference 是針對PreferenceActivity
ListView舊款偏好而設計,而android.support.v7.preference.Preference則適合
用RecyclerView重新設計的PreferenceFragmentCompat,使用的時候對號入座就可以了; -
他們都是內置 SharedPreferences 以及對應的android:key屬性來存儲數據
關鍵屬性:
- android:title,顯示的標題;
- android:summary,標題下面對應的摘要;
- android:key,存儲數據的鍵值;
- android:dependency: 這是一個鍵值,如果設置,必須依賴key這個才可以啟用;
更多細節請 閱讀原文