赞
踩
如何创建和使用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效果图
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
可能近期没时间更新博客可了,等这阵子忙完,大概两三个星期吧,再把博客补回来
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。