如何在Android PreferenceActivity中创建首选项标题组?

Jam*_*mes 24 android preferences

我正在使用首选项标题来创建设置活动PreferenceActivity.我试图将标题划分为类别/组,如此类别(有无线和网络,设备,个人,......类别):

无论如何,即使Android开发者网站关于这种创建偏好活动的方式,我也找不到如何创建与图像上相同的偏好活动.我唯一能做的就是简单的首选项标题列表.

我发现的唯一的事情就是这个,但这有点......奇怪.所以这似乎不是一个选择.

所以我的问题是:如何PreferenceActivity使用首选项标题创建可能将标题分为类别并可能使用主开/关开关?

我的一些代码:

preference_headers.xml:

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
    <header 
        android:fragment="cz.vse.myevents.activity.SettingsActivity$EventsFragment"
        android:title="@string/settings_events"
        android:icon="@android:drawable/ic_menu_agenda" />
    <header 
        android:fragment="cz.vse.myevents.activity.SettingsActivity$OrganizationsFragment"
        android:title="@string/settings_subscribed_organizations"
        android:icon="@android:drawable/ic_menu_view"  />
</preference-headers>
Run Code Online (Sandbox Code Playgroud)

设置活动:

@Override
public void onBuildHeaders(List<Header> target) {
    super.onBuildHeaders(target);
    loadHeadersFromResource(R.xml.preference_headers, target);
}
Run Code Online (Sandbox Code Playgroud)

我不是发布片段资源,认为这是不必要的.

Paw*_*ari 8

这是首选类别示例,您可以使用首选项类别并设置相应的片段并实现此目的,如果我误解您的情况,请告诉我.

这是样本布局

<PreferenceCategory android:title="Heading1">
        <Preference 
            android:title="title1"
            android:summary="summary1"
            android:key="keyName"/>

       <Preference 
            android:title="title2"
            android:summary="summary2"
            android:key="keyName"/>
</PreferenceCategory>

<PreferenceCategory android:title="Heading2">
        <Preference 
            android:title="title3"
            android:summary="summary3"
            android:key="keyName"/>
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 5

似乎最好的解决方案是创建三个不同的代码块 - 一个用于预蜂窝,一个用于后蜂窝,一个用于平板电脑.

使用首选项标题仅对平板电脑有效,因此它们仅保留在平板电脑上.这里没有使用分组.

后Honeycomb上的首选项标题有点无用,所以最好用的是典型PreferenceScreen的a PreferenceFragment.团体可以轻松制作PreferenceCategory.

最后,对于预蜂窝,不使用的弃用方式PrefrenceFragment是唯一的方法.

可悲的是,有很多代码重复,但UnifiedPreferenceLeandros在答案中提到的库是错误的 - 它PreferenceFragment完全忽略它,所以它是无用的(至少对我而言).