Preference(首选项)在Android系统视图中运用比较多,特别是系统设置的UI。Preference与View大体相同,但Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个PreferenPreferencece存储在相对应下的SharedPreference文件夹下)。利用了Preference的存储特性,当用户点击某个选项的时候,它能够将选项记录下来,当用户再次打开Activity时,上次用户的选择不会初始化,而是沿用上次的选择,这样就简化了Android应用配置的开发。
Activity:
addPreferencesFromResource(R.xml.preferences);//引入首选项
preferences.xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> < <PreferenceCategory android:title="@string/inline_preferences"> <!-- 单选项 --> <CheckBoxPreference android:key="checkbox_preference" android:title="@string/title_checkbox_preference" android:summary="@string/summary_checkbox_preference" /> </PreferenceCategory> <PreferenceCategory android:title="@string/dialog_based_preferences"> <!--EditText --> <EditTextPreference android:key="edittext_preference" android:title="@string/title_edittext_preference" android:summary="@string/summary_edittext_preference" android:dialogTitle="@string/dialog_title_edittext_preference" /> <!—List --> <ListPreference android:key="list_preference" android:title="@string/title_list_preference" android:summary="@string/summary_list_preference" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" android:dialogTitle="@string/dialog_title_list_preference" /> </PreferenceCategory> <PreferenceCategory android:title="@string/launch_preferences"> <PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="http://www.android.com" /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_attributes"> <CheckBoxPreference android:key="parent_checkbox_preference" android:title="@string/title_parent_preference" android:summary="@string/summary_parent_preference" /> <!-- The visual style of a child is defined by this styled theme attribute. --> <CheckBoxPreference android:key="child_checkbox_preference" android:dependency="parent_checkbox_preference" android:layout="?android:attr/preferenceLayoutChild" android:title="@string/title_child_preference" android:summary="@string/summary_child_preference" /> </PreferenceCategory> </PreferenceScreen>
单一控件:
Preference 控件 | View控件 | 含义 |
Preference | TextView | 文本框 |
CheckPreference | CheckBox | 单选框 |
EditTextPreference | EditText | 可输入文本框 |
ListPreference | ListView | 列表框 |
RingtonePreference | —— | 铃声 |
组合控件:
PreferenceCategory :类似于LinearLayou、RelativeLayout,用于组合一组Preference,使布局更具备层次感 。
PreferenceScreen : 所有Preference元素的根节点。
Preference元素的通用XML Attributes说明:
android:key | 每个Preference控件独一无二的”ID”,唯一表示此Preference |
默认值。 例如,CheckPreference的默认值可为”true”,默认为选中状态。 EditTextPreference的默认值可为”110” | |
android:enabled | 表示该Preference是否可用状态 |
android:title | 每个Preference在PreferenceScreen布局上显示的标题——大标题 |
android:summary | 每个Preference在PreferenceScreen布局上显示的标题——小标题(可以没有) |
表示Preference元素所对应的值是否写入sharedPreferen文件中,如果是true,则表示写 入;否则,则表示不写入该Preference元素的值。 | |
表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用, 则A可用;B不可用,则A不可用。 | |
android:disableDependentsState | 与android:dependency相反。B可用,则A不可用;B不可用,则A可用。 |
参考:http://blog.youkuaiyun.com/qinjuning
<CheckBoxPreference android:key="checkbox_preference" android:title="@string/title_checkbox_preference" android:summary="@string/summary_checkbox_preference" />
效果:
<EditTextPreference android:key="edittext_preference" android:title="@string/title_edittext_preference" android:summary="@string/summary_edittext_preference" android:dialogTitle="@string/dialog_title_edittext_preference" />
<ListPreference android:key="list_preference" android:title="@string/title_list_preference" android:summary="@string/summary_list_preference" android:entries="@array/entries_list_preference" android:entryValues="@array/entryvalues_list_preference" android:dialogTitle="@string/dialog_title_list_preference" />
<PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="http://www.android.com" /> </PreferenceScreen>
效果:
<CheckBoxPreference android:key="parent_checkbox_preference" android:title="@string/title_parent_preference" android:summary="@string/summary_parent_preference" /> <!-- 底下的选项依赖于上面的选项 --> <CheckBoxPreference android:key="child_checkbox_preference" android:dependency="parent_checkbox_preference" android:layout="?android:attr/preferenceLayoutChild" android:title="@string/title_child_preference" android:summary="@string/summary_child_preference" />