Skip to content Skip to sidebar Skip to footer

Creating A Custom Layout For Preferences

I'm trying to create a custom layout for managing preferences. I know there is the standard and recommended layout provided by PreferenceActivity, but if I want to add, say, a Butt

Solution 1:

You can always create a custom preference layout item and use it in the PreferenceActivity. For example, I did this:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:minHeight="?android:attr/listPreferredItemHeight"android:gravity="center_vertical"android:paddingRight="?android:attr/scrollbarSize"><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="15dip"android:layout_marginRight="6dip"android:layout_marginTop="6dip"android:layout_marginBottom="6dip"android:layout_weight="1"><TextViewandroid:id="@android:id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:singleLine="true"android:textAppearance="?android:attr/textAppearanceLarge"android:ellipsize="marquee"android:fadingEdge="horizontal" /><TextViewandroid:id="@android:id/summary"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@android:id/title"android:layout_alignLeft="@android:id/title"android:textAppearance="?android:attr/textAppearanceSmall"android:maxLines="2" /><ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/go"android:layout_alignParentRight="true" /></RelativeLayout><!-- Preference should place its actual preference widget here. --><LinearLayoutandroid:id="@android:id/widget_frame"android:layout_width="wrap_content"android:layout_height="fill_parent"android:gravity="center_vertical"android:orientation="vertical" /></LinearLayout>

It has some waste, but basically creates 2 lines (heading, subtitle) with an image on the right. You could replace the ImageView with a Button and you'd be all set. You then set the layout for the individual preference in your xml/prefs.xml file like so:

<Preference
    android:title="@string/label_pref_version"
    android:key="@string/pref_version"
    android:layout="@layout/pref" />

After that just fire findViewById in your Activity code and attach a listener to the button. Might have to do some more work if you have multiple buttons in the Activity, but shouldn't be unreasonable.

You can find the source code here : https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/preference.xml

Solution 2:

I plan to design the application so that when the user touches a certain item on the main activity screen, it goes to a 'submenu' of options that the user can enable, which subsequently appears on the next screen (it has to be in this linear progression).

This sounds like a nested PreferenceScreen.

Post a Comment for "Creating A Custom Layout For Preferences"