Android之用XML文件对程序进行配置
Android之用XML文件对程序进行配置
有些程序可以配置,用来让用户设置有些自定义的偏好
可以通过SharedPreference来保存程序运行时用户的状态以及用户输入过的数据,当然我们也可以通过一些自定义的内容来让用户对该程序进行设置
用户设子界面的调用
- public class PreferencesFromXml extends PreferenceActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.preferences);
- }
- }
在自定义用户也配置界面的时候需要用到PreferenceScreen来进行设置
如下所示:
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen
- xmlns:Android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory
- android:title="@string/inline_preferences">
- //复选框的设置
- <CheckBoxPreference
- android:key="checkbox_preference"
- android:title="@string/title_toggle_preference"
- android:summary="@string/summary_toggle_preference" />
- </PreferenceCategory>
- <PreferenceCategory
- android:title="@string/dialog_based_preferences">
- //编辑框的设置
- <EditTextPreference
- android:key="edittext_preference"
- android:title="@string/title_edittext_preference"
- android:summary="@string/summary_edittext_preference"
- android:dialogTitle="@string/dialog_title_edittext_preference" />
- //下拉列表框 设置
- <ListPreference
- android:key="list_preference"
- android:title="@string/title_list_preference"
- android:summary="@string/summary_list_preference"
- android:entries="@array/entries_list_preference"
- android:entryValues="@array/entryvalues_list_preference"
- android:dialogTitle="@string/dialog_title_list_preference" />
- </PreferenceCategory>
- //下面的一个版块都是跳转到另外一个屏幕
- <PreferenceCategory
- android:title="@string/launch_preferences">
- <PreferenceScreen
- android:key="screen_preference"
- android:title="@string/title_screen_preference"
- android:summary="@string/summary_screen_preference">
- //可以到另外一个屏幕显示更多的设置信息 复选框
- <CheckBoxPreference
- android:key="next_screen_checkbox_preference"
- android:title="@string/title_next_screen_toggle_preference"
- android:summary="@string/summary_next_screen_toggle_preference" />
- </PreferenceScreen>
- //意图,用来打开一个网页
- <PreferenceScreen
- android:title="@string/title_intent_preference"
- android:summary="@string/summary_intent_preference">
- <intent android:action="android.intent.action.VIEW"
- android:data="http://www.android.com" />
- </PreferenceScreen>
- </PreferenceCategory>
- <PreferenceCategory
- android:title="@string/preference_attributes">
- <CheckBoxPreference
- android:key="parent_checkbox_preference"
- android:title="@string/title_parent_preference"
- android:summary="@string/summary_parent_preference" />
- //下面的复选框依赖于上面的复选框
- <CheckBoxPreference
- android:key="child_checkbox_preference"
- android:dependency="parent_checkbox_preference"
- android:layout="?android:attr/preferenceLayoutChild"
- android:title="@string/title_child_preference"
- android:summary="@string/summary_child_preference" />
- </PreferenceCategory>
- </PreferenceScreen>
用PreferenceCategory来进行类别的划分
key选项是用来在调用的时候,进行区别的一个键值,如果layout中的 id一样
在调用的时候
在setContentView之前加上PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
而通过下面的方法就可以获取到设置的XML文件中的值了
- SharedPreferences sharedPref = PreferenceManager
- .getDefaultSharedPreferences(this);
- final int counter = sharedPref.getInt(
- AdvancedPreferences.KEY_MY_PREFERENCE, 0);
在对XML进行配置的时候,我们还可以在XML文件中设置该选项的默认值
只需要在给配置项中添加属性 android:defaultValue=“”就可以了
当一个设置选项需要依赖于另外一个的时候,例如上面的key为 "child_checkbox_preference"依赖于key为“parent_checkbox_preference”
此时需要对子选项设置两项内容,一个是其依赖的复选项的key,另一个是设置其属性为子选项
- android:dependency="parent_checkbox_preference"
- android:layout="?android:attr/preferenceLayoutChild"
评论暂时关闭