转载:http://blog.chinaunix.net/uid-24666775-id-351136.html

在Android中的APIdemos是中经常遇到过继承于PreferenceActivity这个类,紧接着就是addPreferencesFromResource(R.xml.*******);(附:这个******就是一个XML文件,以Preference_dependencies为例),现在我们进这个XML文件看下发现:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:title="@string/example_preference_dependency"><CheckBoxPreferenceandroid:key="wifi"android:title="@string/title_wifi" /><EditTextPreferenceandroid:layout="?android:attr/preferenceLayoutChild"android:title="@string/title_wifi_settings"android:dependency="wifi" /></PreferenceCategory></PreferenceScreen>


PreferencrScreen这里我是理解为一个窗口(可能是做展讯的缘故),下面都是他的组建,即构成了一个与用户的交互界面(将会以一个完整的页面显示),这个XML文件主要可以分为两类:一类是管理布局的显示,如PreferenceScreen;另一类是具体的设置内容,如CheckBoxPreference,EditTextPrefrencr。

在上面的程序还发现有PreferenceCategory这个属性,这个主要的作用我是认为将他里面涵盖的东西作为他的一个属性。附其他的属性介绍:Key为这个PreferenceID,设置了才可以在代码中引用,Title是显示的标题,Summary是显示在标题下的文字介绍。效果如下所示:

上面我们介绍了PreferenceActivity设置界面。当PreferenceActivity中的内容改变时,Android系统会自动进行保存和持久化维护,我们只需要在要用的设置界面中数据的地方进行读取就可以了。同时Android还提供了OnPreferenceClickListener和OnPreferenceChangeListener两个与Preference相关的监听接口,当PreferenceActivity中的某一个Preference进行了点击或者改变的操作时,都会回调接口中的函数,这样可以第一个时间向其他Activity等通知系统设置进行了改变。

还有一种方法通过setPreferenceScreen(PreferenceScreen),通过自己写的方法也可以实现上述操作;

public class PreferencesFromCode extends PreferenceActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setPreferenceScreen(createPreferenceHierarchy());    }    private PreferenceScreen createPreferenceHierarchy() {        // Root        PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);                // Inline preferences         PreferenceCategory inlinePrefCat = new PreferenceCategory(this);        inlinePrefCat.setTitle(R.string.inline_preferences);        root.addPreference(inlinePrefCat);                // Toggle preference        CheckBoxPreference togglePref = new CheckBoxPreference(this);        togglePref.setKey("toggle_preference");        togglePref.setTitle(R.string.title_toggle_preference);        togglePref.setSummary(R.string.summary_toggle_preference);        inlinePrefCat.addPreference(togglePref);                        // Dialog based preferences        PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);        dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences);        root.addPreference(dialogBasedPrefCat);        // Edit text preference        EditTextPreference editTextPref = new EditTextPreference(this);        editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference);        editTextPref.setKey("edittext_preference");        editTextPref.setTitle(R.string.title_edittext_preference);        editTextPref.setSummary(R.string.summary_edittext_preference);        dialogBasedPrefCat.addPreference(editTextPref);                // List preference        ListPreference listPref = new ListPreference(this);        listPref.setEntries(R.array.entries_list_preference);        listPref.setEntryValues(R.array.entryvalues_list_preference);        listPref.setDialogTitle(R.string.dialog_title_list_preference);        listPref.setKey("list_preference");        listPref.setTitle(R.string.title_list_preference);        listPref.setSummary(R.string.summary_list_preference);        dialogBasedPrefCat.addPreference(listPref);          return root      } }


效果如图:

更多相关文章

  1. android 设置全屏的两种方法
  2. android.support.v4.widget.DrawerLayout使用
  3. android light
  4. 图片的ScaleType详解 ImageView的属性android:scaleType,
  5. android 打开系统设置界面
  6. Android(安卓)自定义CheckBox 样式
  7. Android设置Button各种状态下背景改变
  8. Android(安卓)日志打印工具类 可显示打印所在的方法和行号
  9. 按钮的多样话 selector的使用

随机推荐

  1. Android应用启动后自动创建桌面快捷方式
  2. Android中的消息机制
  3. 获取Nexus系列手机驱动(用于编译Android(
  4. Google将在Android 2.2中提供Adobe Flash
  5. Android add prebuilt lib(*.so) to Andr
  6. Android多媒体学习一:Android中Image的简
  7. Android下使用Hessian与Java服务端通讯
  8. Binder研究之一   制定计划
  9. Android读写XML(中)——SAX
  10. [置顶] Android 定时任务的多种实现方式