有人会纳闷,为什么不使用普通的控件去写settings页面,非得要preference来写,这是有原因的,Preference可以自动保存上一次操作的值,并且preference会自动将自己的值保存在shared Preference里面,而preference的key作为在shared Preference的主键,用来检索preference保存的值,这就是preference的特点,settings页面需要对当前操作进行保存,普通控件的保存繁琐,所以使用preference是明智之举。Android里面有一个PreferenceActivity,但是创建PreferenceActivity会附带很多xml文件等,反而增加了编程的学习时间和成本,所以不建议使用,比较折中的方法是使用普通的Activity+preference的xml文件来使用,我在上一篇博文中也提到这个,这里只对Activity+Preference的方法做举例。
如何创建和使用Preference页面,我在上一篇博文里有详细提及,这里就不详细说明了,想要了解的小伙伴可以都这里查看:Settings设置页面的Preference使用方法
PreferenceScreen的资源文件里,有以下几种控件,都相对应着不同的普通控件:如下
preference控件 | 相似 | 特征 |
---|---|---|
preference | textView | 可以保存一些文本数据 |
CheckBoxPreference | CheckBox | 多选 |
EditTextPreference | EditText | 编辑文本 |
ListPreference | ListView | 单选,也类似多个RadioButon |
PreferenceCategory | LinearLayou、RelativeLayout | 可以对不同的preference控件进行分类 |
SwitchPreference | RadioButton,CheckBox | 有开和关的选择,常用 |
RingtonePreference | 铃声 | 自动加载系统的铃声,并可供选择 |
PreferenceScreen | 所有Preference元素的根节点 |
看一下效果图:
Preference和CategoryPreference效果图
SwitchPreference效果图
CheckBoxPreference效果图