我在使用首选项屏幕上支持库中的新material 设计工具栏时遇到了问题.

我有一本书.xml文件如下:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="@string/AddingItems"
        android:key="pref_key_storage_settings">

        <ListPreference
            android:key="pref_key_new_items"
            android:title="@string/LocationOfNewItems"
            android:summary="@string/LocationOfNewItemsSummary"
            android:entries="@array/new_items_entry"
            android:entryValues="@array/new_item_entry_value"
            android:defaultValue="1"/>

    </PreferenceCategory>
</PreferenceScreen>

字符串在其他地方定义.

推荐答案

你可以用PreferenceFragment来代替PreferenceActivity.下面是一个例子:

public class MyPreferenceActivity extends ActionBarActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pref_with_actionbar);

        android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(uk.japplications.jcommon.R.id.toolbar);
        setSupportActionBar(toolbar);

        getFragmentManager().beginTransaction().replace(R.id.content_frame, new MyPreferenceFragment()).commit();
    }
}

下面是布局文件(Pref_With_Actionbar):

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="@dimen/action_bar_height"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:theme="@style/ToolbarTheme.Base"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_below="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

最后是前PreferenceFragment名:

public static class MyPreferenceFragment extends PreferenceFragment{
    @Override
    public void onCreate(final Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
}

我希望这能帮助别人.

Android相关问答推荐

在Android中点击滑动时触发的手势

错误:无法解析Symbol@style/Theme. Androidstudio in AndroidManifest.html for Kotlin Android Development''

Android深度链接配置中的URL片段匹配'

Jetpack Compose-如何使用值动画直接控制其他动画

避免在按下肯定按钮时自动取消AlertDialog

StateFlow集合AsState没有更新他的值Jetpack Compose导航

在Jetpack Compose中的隐藏状态栏后面绘制

使用Jetpack Compose创建特定于电视的布局

数据绑定在Android中等待填充值时显示未填充的值

触发PurchasesUpdatedListener回调时,billingClient.launchBillingFlow之前设置的成员变量丢失

如何将.txtassets资源 转换为ArrayList<;字符串>;kotlin格式?

任务 ':app:kaptGenerateStubsDebugKotlin' 执行失败

如何以编程方式通过 whatsapp android 共享图像和文本

Jetpack compose :使用 rememberSaveable 时未应用待处理的合成

如何正确地将图像上传到 Jetpack Compose 中的 LazyList 中的项目?

从活动共享视图模型以使用 hilt 组合函数

在事件中使用 Context/Toast 时不需要的重组 - Jetpack Compose

观察软键盘可见性,打开/关闭 Jetpack Compose

如何在 Android 应用程序未激活/未聚焦时显示视图?

Android 12 通过包管理器中断 APK 安装?