Adding a Wee Bit o Structure

If you have a lot of preferences for users to set, having them all in one big list may become troublesome. Android's preference framework gives you a few ways to impose a bit of structure on your bag of preferences, including categories and screens.

Categories are added via a PreferenceCategory element in your preference XML and are used to group together related preferences. Rather than have your preferences all as children of the root PreferenceScreen, you can put a few PreferenceCategory elements in the PreferenceScreen, and then put your preferences in their appropriate categories. Visually, this adds a divider with the category title between groups of preferences.

If you have lots and lots of preferences—more than is convenient for users to scroll through— you can also put them on separate "screens" by introducing the PreferenceScreen element.

Yes, that PreferenceScreen element.

Any children of PreferenceScreen go on their own screen. If you nest PreferenceScreens, the parent screen displays the screen as a placeholder entry—tapping that entry brings up the child screen. For example, from the Prefs/Structured sample project on the Apress Web site, here is a preference XML file that contains both PreferenceCategory and nested PreferenceScreen elements:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Simple Preferences'^

<CheckBoxPreference android:key="@string/checkbox" android:title="Checkbox Preference" android:summary="Check it on, check it off"

<RingtonePreference android:key="@string/ringtone" android:title="Ringtone Preference" android:showDefault="true" android:showSilent="true" android:summary="Pick a tone, any tone"

</PreferenceCategory>

<PreferenceCategory android:title="Detail Screens">

<PreferenceScreen android:key="detail" android:title="Detail Screen"

android:summary="Additional preferences held in another page"> <CheckBoxPreference android:key="@string/checkbox2" android:title="Another Checkbox" android:summary="On. Off. It really doesn't matter."

</PreferenceScreen> </PreferenceCategory> </PreferenceScreen>

The result, when you use this preference XML with your PreferenceActivity implementation, is a categorized list of elements like those in Figure 17-4.

Figure 17-4. The Structured project's preference UI, showing categories and a screen placeholder

And if you tap on the Detail Screen entry, you are taken to the child preference screen (Figure 17-5).

aBDB 6:39 PM

Another Checkbox

On. Off. It really doesn't matter.

Figure 17-5. The child preference screen of the Structured project's preference UI

0 0

Post a comment