Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
来源:互联网 发布:乔斯韦登 知乎 编辑:程序博客网 时间:2024/05/20 01:13
有人会纳闷,为什么不使用普通的控件去写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和CategoryPreference效果图
SwitchPreference效果图
CheckBoxPreference效果图
RingtonePreference 效果图(无聊加了张小图片,提示你这个也能加图片)
点击RingtonePreference 以后跳转到以下界面,这个不用自己写,只要使用了RingtonePreference 控件,单击就会有这种效果
样式代码:
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:key="categoryOne" android:title="General"> <Preference android:key="prefAndroid" android:title="安卓" android:summary="点一下更新内容"/> <Preference android:key="prefIos" android:title="IOS" android:summary="可以作为一个设置项"/> <CheckBoxPreference android:key="prefCheckBoxOne" android:title="这相当于一个CheckBox"/> <CheckBoxPreference android:key="prefCheckBoxTwo" android:title="还可以设置summary" android:summaryOn="选中了" android:summaryOff="没选中"/> <EditTextPreference android:key="prefEditText" android:title="这相当于一个EditText" android:summary="我是EditText的一个summary"/> <ListPreference android:key="prefList" android:title="这相当于一个List表"/> </PreferenceCategory> <PreferenceCategory android:key="prefCategoryTwo" android:title="Inactive" > <MultiSelectListPreference android:key="prefMultiSelect" android:title="这相当于一个MultiSelect"/> <SwitchPreference android:key="prefSwitch" android:title="这相当于一个Switch" android:switchTextOn="switchTextOn选中了" android:switchTextOff="switchTextOff没选中" android:summaryOn="summaryOn选中了" android:summaryOff="summaryOff没选中" android:shadowColor="#0df10d"/> <RingtonePreference android:key="prefRingtone" android:title="这相当于一个" android:summary="请选择铃声" android:icon="@mipmap/ic_launcher_round"/> </PreferenceCategory></PreferenceScreen>
具体如何写样式资源文件,在上一篇博文上写过:想了解的伙伴可以点击这个:Settings设置页面的Preference使用方法。
下面详细地介绍一下这些空间怎么用。
1. Preference的使用
preference相当于普通的文本控件,能够记录基本的文本。
点击事件如下:
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if(preference==prefAndroid){ Toast.makeText(mContext,"点击了第一个Preference",Toast.LENGTH_SHORT).show(); }else if(preference==prefIos){ Toast.makeText(mContext,"点击了第二个Preference",Toast.LENGTH_SHORT).show(); }else if(preference==prefCheckBoxOne){ Toast.makeText(mContext,"点击了第一个CheckBoxPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefCheckBoxTwo){ Toast.makeText(mContext,"点击了第二个CheckBoxPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefEditText){ Toast.makeText(mContext,"点击了EditTextPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefList){ Toast.makeText(mContext,"点击了ListPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefMultiSelect){ Toast.makeText(mContext,"点击了MultiSelectListPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefRingtone){ Toast.makeText(mContext,"点击了SwitchPreference",Toast.LENGTH_SHORT).show(); }else if(preference==prefRingtone){ Toast.makeText(mContext,"点击了RingtonePreference",Toast.LENGTH_SHORT).show(); } return super.onPreferenceTreeClick(preferenceScreen, preference); }
在setting的preference页面里,使用这个重写函数可以对点击事件进行响应。preference控件更多地是被用作跳转到下一个preference页面的承载。,这里不多说!
2. CheckBoxPreference的使用
CheckBoxPreference控件相当于一个CheckBox控件,通过点击来实现单击和选中。
if(preference.isSelectable()){
preference.setTitle("我要选中它!");
preference.setSummary("点击了选中!");
}else {
preference.setTitle("我不想选中它!");
preference.setSummary("取消了选中!");
}
3. EditTextPreference 的使用
EditTextPreference点击后出现一个dialog对话框,可以添加编辑文本,文本添加以后会保存在sharepreference里,下次编辑时默认显示上次添加的内容。添加文本以后控件不会显示该文本,可以将文本赋值给EditTextPreference的summary属性,让它直接显示在界面上。
但是有一点,如上图,dialog的标题就是这个控件的summary值,这一点需要注意。
4. 其他控件的使用这里就不多说了,最近比较忙,以至于近期都没有按时写博客。突然发现自己在大一大二落下了许多知识,现在想要补回来,奈何时间太少。寒假需要学一学算法,这里立一个flags
可能近期没时间更新博客可了,等这阵子忙完,大概两三个星期吧,再把博客补回来
- Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
- android 4.2 自定义PreferenceCategory PreferenceScreen Preference等
- [android]隐藏PreferenceCategory和Preference的方法
- Preference的使用(2) --- PreferenceCategory && PreferenceScreen
- Android中Preference,preferenceActivity,PreferenceFragment等的使用
- Android preference 自定义控件
- 关于Preference相关控件修改出现的问题
- 自定义控件的讲解
- Android自定义PreferenceCategory的title颜色、字体大小写的方法
- Android自定义PreferenceCategory的title颜色、字体大小写的方法
- [Android--Tool]开发前eclipse preference的一些简单设置
- scaleGrid的简单讲解
- 简单的epoll讲解
- HTTP的简单讲解
- MapReduce的简单讲解
- WebView的简单讲解
- Webmagic简单的讲解
- UITextView控件的详细讲解
- 对字典对象组成的List集合进行Lambda表达式的GroupBy
- mybatis java.sql.SQLException: 无效的列类型
- 剖析InnoDB与MyISAM的区别-mysql
- Java-001-认识Java
- 数据库和数据仓库的区别?
- Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
- SM9必要的一些数学基础知识(二)
- Java-002-认识JDK并配置path环境变量
- JavaScript 疲劳终极指南:我们行业的真相 罗雪
- 连续子数组的最大和
- 网易2017春招编程题:集合 [python]
- mysql临时表
- 帝国cms搜索模板支持灵动标签和万能标签(支持到7.2)
- Python语言编码问题详解