现在的位置: 首页 > 综合 > 正文

PreferenceActivity:设置页面的一般使用方法

2013年12月23日 ⁄ 综合 ⁄ 共 3828字 ⁄ 字号 评论关闭

例子:preference.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="退出时自动清空缓存" >
        <CheckBoxPreference
            android:title="退出时自动清空缓存"
            android:defaultValue="true"
            android:key="checkbox_clear"
            android:summaryOff="功能: 关闭"
            android:summaryOn="功能: 开启" />
    </PreferenceCategory>
    <PreferenceCategory android:title="下载图片" >
       <ListPreference
            android:dialogTitle="选择环境"
            android:entries="@array/entries_list_preference"
            android:entryValues="@array/entriesvalue_list_preference"
            android:key="ListPreference"
            android:title="图片下载方式" />
    </PreferenceCategory>
    <PreferenceCategory android:title="云端推送" >
       <CheckBoxPreference
            android:title="是否开启云端推送" 
            android:defaultValue="true"
            android:key="checkbox_open"
            android:summaryOff="功能: 关闭"
            android:summaryOn="功能: 开启"/>
        <EditTextPreference
            android:dialogTitle="间隔时间设置"
            android:key="EditTextPreference"
            android:summary="点击输入" android:defaultValue="8"
            android:dependency="checkbox_open"
            android:title="间隔时间设置" />
        <RingtonePreference
            android:key="RingtonePreference"
            android:summary="选择铃声"
             android:dependency="checkbox_open"
            android:title="铃声设置" />
    </PreferenceCategory>
</PreferenceScreen>

Activity代码:

public class SetActivity extends PreferenceActivity {
 SharedPreferences mPreferences;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 所的的值将会自动保存到SharePreferences
  addPreferencesFromResource(R.xml.preferences);
  mPreferences = PreferenceManager
    .getDefaultSharedPreferences(this);

 }

 @Override
 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
   Preference preference) {
  preference
    .setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
     @Override
     public boolean onPreferenceChange(Preference preference,
       Object newValue) {
      String key = preference.getKey();
      if (key.equals("checkbox_clear")) {
       System.out.println("changes"+mPreferences.getBoolean("checkbox_clear", false));
       preference.setDefaultValue(false);
      }
      if(key.equals("list_pic")) {
       System.out.println("changes+"+array[Integer.parseInt((String) newValue)-1]);
      }
      return true;
     }
    });
  return true;
 }

}

XML中参数详解:

容器: 

Java代码  

  1. PreferenceGroup 可以为多个Preference定义一个组,PreferenceCategory, PreferenceScreen为它的子类。   
  2. PreferenceCategory 同样可以包含多个Preferneces ,如果该组被Disable时,可以提供一个标题。   
  3. PreferenceScreen 为 Preferences层次结构的根元素,PreferenceScreen可以实现嵌套。内层的PreferenceScreen将会使用一个新的屏幕显示,有点类似于Word中的分页功能。  

PreferenceGroup 可以为多个Preference定义一个组,PreferenceCategory, PreferenceScreen为它的子类。PreferenceCategory 同样可以包含多个Preferneces ,如果该组被Disable时,可以提供一个标题。PreferenceScreen
为 Preferences层次结构的根元素,PreferenceScreen可以实现嵌套。内层的PreferenceScreen将会使用一个新的屏幕显示,有点类似于Word中的分页功能。

组件: 

Java代码  

  1. CheckBoxPreference 使用Checkbox 来显示某个配置项。   
  2. EditTextPreference 使用文本框来显示某个牌子项,允许接受用户输入文本。   
  3. ListPreference 使用一组单选钮 (列表)可以从中选择某一项。   
  4. MultiSelectListPreference 使用一组Checkbox,允许该配置项有多值。   
  5. RingtonPreference 允许用户从选取某个铃声  

 

几个特别的属性: 

1、android:dependency=key

从属于谁 后面跟的为android:key的值 
只有在Parent preference选中时,子Preference 才可以配置,否则子Preference 被Disabled,显示为灰色。 

2、android:defaultValue=“” 

在XML中定义Preference的缺省值。 

注意: 
CheckBoxPreference:通过true或者false来设置初始值

Java代码  

  1. android:defaultValue=”true”  

android:defaultValue=”true”


EditTextPreference:通过字符串来设置初始值

Java代码  

  1. android:defaultValue=”@string/default_value_edittext_preference”  

android:defaultValue=”@string/default_value_edittext_preference”


ListPreference:通过value的值 也就是android:entryValues来设置初始值

Java代码  

  1. android:defaultValue=”@string/default_value_list_preference”  

android:defaultValue=”@string/default_value_list_preference”

抱歉!评论已关闭.