PreferenceActivity的XML中主要有7种元素,分别是PreferenceScreen(根元素),CheckBoxPreference(CheckBox选项,如系统设置-无线网络里的飞行模式),EditTextPreference(弹出一个EditText),ListPreference(弹出一个选择列表),Preference(只显示文本,需要在代码中添加点击事件),PreferenceCategory(分组标题栏),RingtonePreference(铃声设置)。 下面写个小例子: 添加类型为Preference的xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="播放设置">
<ListPreference android:title="播放服务器" android:summary="设置默认播放服务器,默认为1号服务器" android:entries="@array/server" android:entryValues="@array/server"
android:dialogTitle="选择播放服务器" android:key="server_list">
</ListPreference>
<ListPreference android:title="播放模式" android:summary="模式1不支持MoboPlayer" android:entries="@array/play_mode" android:entryValues="@array/mode_value"
android:dialogTitle="选择播放服务器" android:key="play_mode">
</ListPreference>
<ListPreference android:title="播放器" android:summary="设置默认播放器" android:dialogTitle="选择已安装播放器" android:key="player">
</ListPreference>
</PreferenceCategory>
<PreferenceCategory android:title="帮助">
<Preference android:title="查看帮助" android:summary="如果您有问题,请先查看帮助" android:key="help" />
</PreferenceCategory>
<PreferenceCategory android:title="反馈">
<Preference android:title="用户反馈" android:summary="您对我们有什么意见,可以联系我们" android:key="feedback" />
</PreferenceCategory>
</PreferenceScreen>
android:title即大号字体显示的标题,android:summary即短描述,android:key即保存该值的key,对ListPreference而言,还有android:entries,android:entryValues分别是显示的列表数据,和保存的值。 其中第三个ListPreference并没有设置android:entries,android:entryValues,我们将在Java代码中设置。
public class Setting extends PreferenceActivity {
Dialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
dialog=new Dialog(this);
//自己写的用于执行相应操作的类
ListPreference pre=(ListPreference)findPreference("player");
pre.setEntries(new CharSequence[]{"Moboplayer","Vplayer","RockPlayer"});
pre.setEntryValues(new CharSequence[]{"0","1","2"});
//动态设置ListPreference
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
// TODO Auto-generated method stub
String key=preference.getKey();
//根据被点击项的key执行相应操作
if(key.equals("help"))
{
dialog.showHelp();
}
if(key.equals("feedback"))
{
dialog.feedBack();
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
}