Как создать панель инструментов в PreferenceScreen? - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь выполнить действие Настройки в моем текущем приложении, которое расширяется от AppCompatPreferenceActivity. Мне удалось получить нужный экран, но я не смог создать простую панель инструментов с клавишей «Назад». Я уже пробовал использовать:

  1. накачивание пользовательской панели инструментов
  2. с использованием getSupportActionBar().setDisplayHomeAsUpEnabled(true) из AppCompatPreferenceActivity

Большая часть того, что я использую, пришла от этого !. Я удалил часть фрагмента из-за ошибок, которые он вызывал.

Также у меня есть NoActionBar theme.

До сих пор я использовал это в одном из своих предпочтений «о» и «помощь», которые работают безупречно:

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setTitle(getString(R.string.about));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

UPDATE : Получил ответ здесь

1 Ответ

0 голосов
/ 23 марта 2019

Да, когда вы используете getSupportActionBar().setDisplayHomeAsUpEnabled(true); для панели инструментов, она должна работать нормально, ваша реализация кажется правильной, но если ваша отладка или полный код не все могут найти сценарий, попробуйте проверить этот стиль.

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">

        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <!--<item name="android:windowContentOverlay">@null</item>-->
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item>
    </style>
    <!--use item name="drawerArrowStyle" if you are using dark primaryColor in your app, else remove it-->
    <style name="MaterialDrawer.DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">false</item>
        <item name="color">@android:color/white</item>
    </style>

</resources>

toolbar = (Toolbar) findViewById(R.id.toolbar2);
        setSupportActionBar(toolbar);
        setTitle(getIntent().getExtras().getString("channe_name"));
        toolbar.setSubtitle(getIntent().getExtras().getString("channe_name"));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

, а также убедитесь, что в xml указано то же самое, что и объявленное

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/toolbar2"
    android:layout_width="match_parent"
    android:layout_height="?android:actionBarSize"
    android:background="?colorPrimary"
    android:elevation="8dp"
    android:minHeight="?attr/actionBarSize"
    tools:ignore="Overdraw"
    tools:targetApi="lollipop">
...