在Android系統源碼中,絕大多數應用程序的UI佈局採用了Preference的佈局結構,而不是咱們平時在模擬器中構建應用程序時使用的View佈局結構,例如,Setting模塊中佈局。固然,凡事都有例外,FMRadio應用程序中則使用了View佈局結構(多是該應用程序是marvel公司提供的,若是由google公司作,那可說不許)。歸根到底,Preference佈局結構和View的佈局結構本質上仍是大同小異,Preference的優勢在於佈局界面的可控性和高效率以及可存儲值的簡潔性(每一個PreferenPreferencece存儲在相對應下的SharedPreference文件夾下)。 下面,咱們對比Preference和View下得各個子控件,對他們的家庭元素在宏觀上有個更好的把握性。java
Preference 控件家庭 View控件家庭 控件含義android
Preference TextView 文本框佈局
CheckPreference CheckBox 單選框google
EditTextPreference EditText 輸入文本框 spa
ListPreference ListView 列表框orm
RingtonePreference —— 鈴聲xml
其實在Android源碼系統中還有不少的」未完工」的Preference, 沒有爲它們提供PI接口,例如SeekBarPreference,繼承
有興趣的同窗能夠參考源碼,具體路徑爲:frameworks/base/core/java/preference。接口
PreferenceCategory :相似於LinearLayou、RelativeLayout,用於組合一組Preference,使佈局更具有層次感 。get
PreferenceScreen : 全部Preference元素的根節點。
使咱們的Activity繼承PreferenceActivity,而後在onCreate()方法中經過
addPreferencesFromResource(R.xml.custom_preference) (咱們自定義的Preference 佈局)。
怎麼樣,是否是似曾相識?稍後會用一個Demo來爲您詳述。
android:key : 每一個Preference控件獨一無二的」ID」,惟一表示此Preference。
android:defaultValue : 默認值。 例如,CheckPreference的默認值可爲」true」,默認爲選中狀態;
EditTextPreference的默認值可爲」110」 。
android:enabled : 表示該Preference是否可用狀態。
android:title : 每一個Preference在PreferenceScreen佈局上顯示的標題——大標題
android:summary : 每一個Preference在PreferenceScreen佈局上顯示的標題——小標題(能夠沒有)
android:persistent: 表示Preference元素所對應的值是否寫入sharedPreferen文件中,若是是true,則表示寫
入;不然,則表示不寫入該Preference元素的值。
android:dependency: 表示一個Preference(用A表示)的可用狀態依賴另一個Preference(用B表示)。B可用,
則A可用;B不可用,則A不可用。
android:disableDependentsState: 與android:dependency相反。B可用,則A不可用;B不可用,則A可用。
經常使用的方法則包括:
getKey() setKey()
getSummary() setSummary()
getText() setText()