1. 首先生成一个preferencescreen的xml文件..看代码:
<?xml version="1.0" encoding="utf-8"?>
<preferencescreen
xmlns:android="http://schemas.android.com/apk/res/android">
<checkboxpreference
android:key="check1"
android:title="音乐"
android:summary="adas"
/>
<checkboxpreference
android:key="autoback"
android:title="自动回复"
android:summaryon="开启"
android:summaryoff="关闭"
android:defaultvalue="true"
/>
<!-- 这里是我自定义的preference,详细代码请看下面
android:dialoglayout="@layout/setting_widthseekbar"
这个就是弹出窗口后要显示的布局文件..这个大家想显示成什么样子.自己设置了
-->
<preferencescreen.hall.seekbarpreference
android:key="sss"
android:title="111"
android:dialogtitle="333"
android:dialoglayout="@layout/setting_widthseekbar"
android:persistent="true"/>
<preferencecategory android:title="sms 助手">
android:key="smssilence"
android:title="静音"
android:defaultvalue="false"
/>
<preferencescreen android:title="更多选项">
android:key="cb21"
android:title="功能1"
android:key="cb22"
android:title="功能2"
android:summaryon="使用"
android:summaryoff="停用"
<listpreference
android:key="list1"
android:title="android forum"
android:summary="开发论坛"
android:dialogtitle="请选择论坛"
android:entries="@array/entries"
android:entryvalues="@array/entryvalue"
<edittextpreference
android:key="et1"
android:title="edittextpreference sample"
android:summary="点击输入"
android:dialogtitle="输入设置"
android:defaultvalue="hello edittextpreference"
</preferencescreen>
</preferencecategory>
<preferencecategory android:title="其他选项">
<ringtonepreference
android:key="rt1"
android:title="ringtonepreference sample"
android:summary="选择铃声"
<preference
android:key="aa"
android:title="测试"
android:summary="测试中"
/>
</preferencecategory>
复制代码
2.然后在preferenceactivity里面引用就好了
import android.app.activity;
import android.os.bundle;
import android.preference.checkboxpreference;
import android.preference.preference;
import android.preference.preference.onpreferencechangelistener;
import android.preference.preferenceactivity;
public class preferencescreen extends preferenceactivity
{
private checkboxpreference chekcb=null;
/** called when the activity is first created. */
@override
protected void oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
addpreferencesfromresource(r.xml.preference);
chekcb=(checkboxpreference) findpreference("autoback");//这里就像findviewbyid一样,不过这里的id其实是key的值..
//下面设置监听器
chekcb.setonpreferencechangelistener(new mypreferenceschance());
}
class mypreferenceschance implements onpreferencechangelistener{
@override
public boolean onpreferencechange(preference preference, object newvalue) {
// todo auto-generated method stubd
system.out.println("newvalue"+newvalue);
return true;
}
}

有时候因为需要我们需要自己定义个preference选项..系统自带的那些就满足不了我们了..下面让我们来看下如何自定义preference选项,其实很简单..比如说你要定义一个对话框形式的preference..只要继承dialogpreference就可以了,然后在preferencescreen里面引用,设置一下属性就好了,xml设置,请看上面的preferencescreen.xml文件..下面是代码
ackage preferencescreen.hall;
import android.content.context;
import android.preference.dialogpreference;
import android.util.attributeset;
import android.widget.seekbar;
import android.widget.seekbar.onseekbarchangelistener;
public class seekbarpreference extends dialogpreference implements onseekbarchangelistener{
public seekbarpreference(context context, attributeset attrs) {
super(context, attrs);
// todo auto-generated constructor stub
public void onprogresschanged(seekbar seekbar, int progress,
boolean fromuser) {
// todo auto-generated method stub
public void onstarttrackingtouch(seekbar seekbar) {
public void onstoptrackingtouch(seekbar seekbar) {