任何App都会存在设置界面,如果开发者利用普通控件并绑定监听事件保存设置,这一过程会非常的枯燥,而且耗时。我们可以看到Android系统的设置界面里面的选项如此之多,是不是都是这样开发的呢?其实不然,Android已经给我们提供了专门设计这一功能的技术,叫应用程序首选项,今天我们将学习如何使用他们来开发配置界面以及功能。
二、准备工作
首先需要理解的就是我们设置界面还是需要控件的,但是我们所使用的控件不在是普通的控件,下面我们来简单的介绍下我们需要知道的控件。
CheckBoxPreference:用来实现勾选的项目,在SharedPreference中保存为bool类型。
EditTextPreference:用来实现字符输入的项目,在SharedPreference中保存为字符串类型。
ListPreference:用来实现提供一列数据供选择的项目,在SharedPreference中保存为字符串类型。
PreferenceActivity:首选项活动。
PreferenceCategory:用来实现将首选项进行分类。
PreferenceScreen:用于在另一个新的屏幕上对首选项进行分组。
除了以上的还有其它的这里就不意义例举了。
三、正文
1.显示一个简单的首选项
首先我们需要打开MainActivity并将继承的基类改成PreferenceActivity,然后将SetContentView改成AddPreferencesFromResource,具体的代码如下所示:
1 protected override void OnCreate(Bundle bundle) 2 { 3 base.OnCreate(bundle); 4 AddPreferencesFromResource(Resource.Layout.Main); 5 }
读者也可以尝试不修改而直接显示,当然一定会报错。
修改好了代码我们打开Main.axml并将其中的所有xml删除,改写成如下所示:
1 <?xml version="1.0" encoding="utf-8"?> 2 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 3 <PreferenceCategory 4 android:title="配置分类1"> 5 <CheckBoxPreference 6 android:key="PREF_CHECK_BOX" 7 android:title="Check Box Preference" 8 android:defaultValue="true" /> 9 </PreferenceCategory> 10 <PreferenceCategory 11 android:title="配置分类2"> 12 <EditTextPreference 13 android:key="PREF_EDIT_BOX" 14 android:title="Edit Text Preference" 15 android:dialogMessage="please input" 16 android:defaultValue="test" /> 17 </PreferenceCategory> 18 <PreferenceCategory 19 android:title="配置分类3"> 20 <ListPreference 21 android:title="List Preference" 22 android:key="listChoice" 23 android:entries="@array/ListText" 24 android:entryValues="@array/ListValue" 25 android:summary="choice one item" /> 26 </PreferenceCategory> 27 <PreferenceCategory 28 android:title="配置分类4"> 29 <PreferenceScreen 30 android:title="子配置"> 31 <CheckBoxPreference 32 android:key="PREF_CHECK_BOX_1" 33 android:title="Check box" 34 android:defaultValue="true" /> 35 </PreferenceScreen> 36 <PreferenceScreen 37 android:title="打开新的意图"> 38 <intent 39 android:action="android.settings.DISPLAY_SETTINGS" /> 40 </PreferenceScreen> 41 </PreferenceCategory> 42 </PreferenceScreen>