为首选项创build自定义布局

我正在尝试创build一个自定义布局来pipe理首选项。 我知道有PreferenceActivity提供的标准和推荐的布局,但是如果我想添加一个Button,我该如何去做呢?

我计划devise应用程序,以便当用户触摸主活动屏幕上的某个项目时,它将转到用户可以启用的选项的“子菜单”,随后出现在下一个屏幕上(必须在此处线性进展)。 用户每次使用应用程序时都必须设置这些。 目前,我正在考虑使用标准的PreferenceActivity来表示这个选项的子菜单。

也许这不是正确的做法?

编辑:我忽略了解决scheme,同时谷歌search。 如何将button添加到PreferenceScreen

您始终可以创build自定义首选项布局项目并在PreferenceActivity中使用它。 例如,我做了这个:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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"> <RelativeLayout android: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"> <TextView android: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" /> <TextView android: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" /> <ImageView android: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. --> <LinearLayout android:id="@android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="fill_parent" android:gravity="center_vertical" android:orientation="vertical" /> </LinearLayout> 

它有一些浪费,但基本上创build了2行(标题,副标题)与右侧的图像。 你可以用一个buttonreplaceImageView,你会被设置。 然后,您可以在xml/prefs.xml文件中设置各个首选项的布局,如下所示:

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

之后,只需在您的Activity代码中触发findViewById并将侦听器附加到该button。 如果活动中有多个button,则可能需要做更多的工作,但不应该是不合理的。

你可以在这里find源代码: https : //android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/preference.xml

我打算devise应用程序,以便当用户触摸主活动屏幕上的某个项目时,它将转到用户可以启用的选项的“子菜单”,随后出现在下一个屏幕上(必须在此处线性进展)。

这听起来像一个嵌套的PreferenceScreen