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"


li
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值