解决方案

Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解

seo靠我 2023-09-23 02:34:10
有人会纳闷,为什么不使用普通的控件去写settings页面,非得要preference来写,这是有原因的,Preference可以自动保存上一次操作的值,并且preference会自动将自己的值保存在SEO靠我shared Preference里面,而preference的key作为在shared Preference的主键,用来检索preference保存的值,这就是preference的特点,settiSEO靠我ngs页面需要对当前操作进行保存,普通控件的保存繁琐,所以使用preference是明智之举。Android里面有一个PreferenceActivity,但是创建PreferenceActivitySEO靠我会附带很多xml文件等,反而增加了编程的学习时间和成本,所以不建议使用,比较折中的方法是使用普通的Activity+preference的xml文件来使用,我在上一篇博文中也提到这个,这里只对ActiSEO靠我vity+Preference的方法做举例。

如何创建和使用Preference页面,我在上一篇博文里有详细提及,这里就不详细说明了,想要了解的小伙伴可以都这里查看:Settings设置页面的PrefeSEO靠我rence使用方法

PreferenceScreen的资源文件里,有以下几种控件,都相对应着不同的普通控件:如下

preference控件相似特征preferencetextView可以保存一些文本数据CSEO靠我heckBoxPreferenceCheckBox多选EditTextPreferenceEditText编辑文本ListPreferenceListView单选,也类似多个RadioButonPreSEO靠我ferenceCategoryLinearLayou、RelativeLayout可以对不同的preference控件进行分类SwitchPreferenceRadioButton,CheckBox有SEO靠我开和关的选择,常用RingtonePreference铃声自动加载系统的铃声,并可供选择PreferenceScreen所有Preference元素的根节点

看一下效果图:

Preference和CateSEO靠我goryPreference效果图

SwitchPreference效果图

CheckBoxPreference效果图

RingtonePreference 效果图(无聊加了张小图片,提示你这个也能加图片)SEO靠我

点击RingtonePreference 以后跳转到以下界面,这个不用自己写,只要使用了RingtonePreference 控件,单击就会有这种效果

样式代码:

<?xml version="1.0" SEO靠我encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/androSEO靠我id"><PreferenceCategory android:key="categoryOne"android:title="General"><Preference SEO靠我 android:key="prefAndroid"android:title="安卓"android:summary="点一下更新内容"/><Preference android:kSEO靠我ey="prefIos"android:title="IOS"android:summary="可以作为一个设置项"/><CheckBoxPreference android:key=SEO靠我"prefCheckBoxOne"android:title="这相当于一个CheckBox"/><CheckBoxPreference android:key="prefCheckBSEO靠我oxTwo"android:title="还可以设置summary"android:summaryOn="选中了"android:summaryOff="没选中"/><EditTextPreferenSEO靠我ce android:key="prefEditText"android:title="这相当于一个EditText"android:summary="我是EditText的一个sumSEO靠我mary"/><ListPreference android:key="prefList"android:title="这相当于一个List表"/></PreferenceCategoSEO靠我ry><PreferenceCategory android:key="prefCategoryTwo"android:title="Inactive" ><MultiSelectLiSEO靠我stPreference android:key="prefMultiSelect"android:title="这相当于一个MultiSelect"/><SwitchPreferenSEO靠我ce android:key="prefSwitch"android:title="这相当于一个Switch"android:switchTextOn="switchTextOn选中了SEO靠我"android:switchTextOff="switchTextOff没选中"android:summaryOn="summaryOn选中了"android:summaryOff="summarySEO靠我Off没选中"android:shadowColor="#0df10d"/><RingtonePreference android:key="prefRingtone"android:SEO靠我title="这相当于一个"android:summary="请选择铃声"android:icon="@mipmap/ic_launcher_round"/></PreferenceCategory>SEO靠我 </PreferenceScreen>

具体如何写样式资源文件,在上一篇博文上写过:想了解的伙伴可以点击这个:Settings设置页面的Preference使用方法。

下面详细地介绍一下SEO靠我这些空间怎么用。

1. Preference的使用

preference相当于普通的文本控件,能够记录基本的文本。

点击事件如下:@Overridepublic boolean onPreferenceTrSEO靠我eeClick(PreferenceScreen preferenceScreen, Preference preference) {if(preference==prefAndroid){ToastSEO靠我.makeText(mContext,"点击了第一个Preference",Toast.LENGTH_SHORT).show();}else if(preference==prefIos){ToastSEO靠我.makeText(mContext,"点击了第二个Preference",Toast.LENGTH_SHORT).show();}else if(preference==prefCheckBoxOnSEO靠我e){Toast.makeText(mContext,"点击了第一个CheckBoxPreference",Toast.LENGTH_SHORT).show();}else if(preferenceSEO靠我==prefCheckBoxTwo){Toast.makeText(mContext,"点击了第二个CheckBoxPreference",Toast.LENGTH_SHORT).show();}elSEO靠我se if(preference==prefEditText){Toast.makeText(mContext,"点击了EditTextPreference",Toast.LENGTH_SHORT).SEO靠我show();}else if(preference==prefList){Toast.makeText(mContext,"点击了ListPreference",Toast.LENGTH_SHORTSEO靠我).show();}else if(preference==prefMultiSelect){Toast.makeText(mContext,"点击了MultiSelectListPreferenceSEO靠我",Toast.LENGTH_SHORT).show();}else if(preference==prefRingtone){Toast.makeText(mContext,"点击了SwitchPrSEO靠我eference",Toast.LENGTH_SHORT).show();}else if(preference==prefRingtone){Toast.makeText(mContext,"点击了SEO靠我RingtonePreference",Toast.LENGTH_SHORT).show();}return super.onPreferenceTreeClick(preferenceScreen,SEO靠我 preference);}

在setting的preference页面里,使用这个重写函数可以对点击事件进行响应。preference控件更多地是被用作跳转到下一个preference页面的承载。,这SEO靠我里不多说!

2. CheckBoxPreference的使用

CheckBoxPreference控件相当于一个CheckBox控件,通过点击来实现单击和选中。

if(preference.isSelectSEO靠我able()){

preference.setTitle("我要选中它!");

preference.setSummary("点击了选中!");

}else {

preference.setTitle("我不SEO靠我想选中它!");

preference.setSummary("取消了选中!");

}

3. EditTextPreference 的使用

EditTextPreference点击后出现一个dialog对话框SEO靠我,可以添加编辑文本,文本添加以后会保存在sharepreference里,下次编辑时默认显示上次添加的内容。添加文本以后控件不会显示该文本,可以将文本赋值给EditTextPreference的sumSEO靠我mary属性,让它直接显示在界面上。

但是有一点,如上图,dialog的标题就是这个控件的summary值,这一点需要注意。

4. 其他控件的使用这里就不多说了,最近比较忙,以至于近期都没有按时写博客。突SEO靠我然发现自己在大一大二落下了许多知识,现在想要补回来,奈何时间太少。寒假需要学一学算法,这里立一个flags 可能近期没时间更新博客可了,等这阵子忙完,大概两三个星期吧,再把博客补回来

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2