Pro Android学习笔记(五八):Preferences(2):CheckBoxPreference

在ListPreference的例子中显示的是单选,如果是多选,可采用CheckBoxPreferece。我们继续航班信息的例子,用户选择航班信息中显示哪些信息(航班,出发时间、到达时间、航程时间、价格)。

CheckBox Preference

xml文件

在res/xml/中增加checkbox.xml文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="flight_columns_pref"
    android:title="Flight Search Prefereces"
    android:summary="Set Columns for Search Results">
    <CheckBoxPreference android:key="show_airline_column_pref"
        android:title="AirLine"
        android:summaryOn="Show AirLine Column"
        android:summaryOff="Not Show AirLine Column" />
       <CheckBoxPreference   android:key="show_departure_column_pref"
        android:title="Departure"
        android:summary="Show Departure column" />
    <CheckBoxPreference … />
    <CheckBoxPreference … />
    <CheckBoxPreference … />
</PreferenceScreen>

android:summaryOn和android:summaryOff表示在选择和不选择分别显示的summary。

设备的存贮文件

在设备上存贮preference的内容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="show_departure_column_pref" value="true" />
    <boolean name="show_airline_column_pref" value="false" /> 
    ……
</map>

从存贮的xml文件中看到,存贮值为boolean,因此在读取preference时采用getBoolean(),如下:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean option = prefs.getBoolean("show_airline_column_pref", false);
showInfo("Show Airline column : " +  option);
showInfo("Show Departure column : " +  prefs.getBoolean("show_departure_column_pref", false));

复合preference

我们的第一个例子是ListPreference,第二个例子是CheckPreference,我们希望这些配置都合并到同一个xml文件中,如下:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http……"
    android:title="Complex Preferences">
    <ListPreference android:key="selected_flight_sort_option"
        android:title="Flight Options"
        android:summary="Set Search Options"
        android:entries="@array/flight_sort_options"
        android:entryValues="@array/flight_sort_options_values"
        android:dialogTitle="Choose Flight Options"
        android:defaultValue="@string/default_flight_option"/>
   
        <PreferenceScreen android:key="flight_columns_pref"
            android:title="Flight Search Prefereces"
            android:summary="Set Columns for Search Results">
            <CheckBoxPreference android:key="show_airline_column_pref"
                android:title="AirLine"
                android:summaryOn="Show AirLine Column"
                android:summaryOff="Not Show AirLine Column" />
               <CheckBoxPreference
                android:key="show_departure_column_pref"
                android:title="Departure"
                android:summary="Show Departure column" />
            <CheckBoxPreference …/>
              … 其他 CheckBox Preference内容…
    </PreferenceScreen>           

</PreferenceScreen>

在同一app下,res/xml中可以设置多个preference文件,它们可以含有同一个key的preference,实际都指向存贮文件中的同一个值,即代表相同的preference,只是在不同的Preferences UI中呈现。

本博文涉及的例子代码,可以在Pro Android学习:Preference(首选项)小例子中下载。

相关链接: 我的Android开发相关文章

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值