我在使用首选项屏幕上支持库中的新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 14无法删除已配置的文件

在不增加父行宽度的情况下添加延迟行或可滚动行

我如何剪裁一个可由另一个合成的

Jetpack Compose和Android Studio中的普通设计工具有什么不同?

使用Kotlin/Compose与Java/XML指南的比较

在带有REACT-Native-CLI的开发和生产中使用Firebase的最佳实践

在Jetpack Compose中,我可以配置动画以恒定的速度而不是恒定的时间运行吗?

弹出导航堆栈后,Compose 无法访问 Hilt View Model

如何在同一行中滚动自定义布局和惰性列,就好像它们是一个组件一样

闪屏 API 无法在 Android 12 上运行(API 31、32)

如何在Android Studio中删除项目

DatePickerDialog (Android/Kotlin) 的两个问题

服务似乎在启动时忽略传递的变量

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

如何在 Android 应用中录制短视频?

如何在 Android 上移动 EditText 上的图标?

不能在kotlin的lazycolumn中使用列表

如何在 Android Studio 中使用 Github Copilot?

未解决的参考:getIntentSender / try 在 Jetpack Compose 中获取电话号码时