Панель инструментов и контекстная ActionBar с AppCompat -V7

? ariets @ | Original: StackOverFlow
---

Я работаю на использовании добавленный панель инструментов, которая была введена в Lollipop и библиотеки AppCompat - V7. Я последовал http://antonioleiva.com/material-design-everywhere/ по настройке панели инструментов, я заметил, что когда вы вызываете что-то, что будет воспитывать контекстное ActionBar (например, выделение текста для копирования / вставки ), что будет толкать Панель инструментов вниз на странице. Вы можете видеть, что я имею в виду в образе внизу страницы:

Так, по существу, я поставил его, как это. У меня есть панель инструментов, определенный в XML- файл, который я использую с включают теги:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/colorPrimary"/>

Тогда, я его экземпляр, на мой взгляд :

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/root"
    tools:context=".MainActivity">

    <include
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/> 

    <!-- Rest of view -->

    </LinearLayout>

В коде, я поставил его так:

    // On Create method of activity:
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

Кто-нибудь знает, как сделать так, чтобыКонтекстная ActionBar приходит возвышаться на панели инструментов ?

Панель инструментов и контекстная ActionBar с AppCompat -V7

---

Top 5 ответ

1Jacob Ras @ Update:

Решение: использовать свойство http://developer.android.com/reference/android/R.attr.html#windowActionModeOverlay . Установите в вашей теме :

<item name="windowActionModeOverlay">true</item>

иactionmode будет показано на панели действий, а не толкая его вниз . (Если вы не используете последнюю AppCompat, то вам нужно добавить "Android :" префикс в собственности).

Old answer/workaround:

Я столкнулся с той же проблемой. Независимо от того, какую тему я поставил, он всегда толкает вниз панель инструментов я поставил как ActionBar . Я попытался с и без библиотеку поддержки, но это не имеет значения.

К сожалению, я не смог это исправить, так что я построил обходной путь вместо этого. В моих ActionModeCallback " SonCreateActionMode Я скрыть панель действий :

actionBarToolbar.setVisibility(View.GONE);

и в onDestroyActionMode Я покажу еще раз:

actionBarToolbar.setVisibility(View.VISIBLE);

Скрытие / показ происходит так быстро, что не заметно на моих тестовых устройств. Существует, конечно,недостаток : хотявведите, анимация по-прежнему работает ,экзит- анимация контекстной панели действий теряется, потому чтопанель инструментов сразу появляется над ней. Но пока мы не сталкиваемся лучшее решение я думаю, что мы застряли с этим.

( Моя деятельность на самом деле расширения обычай BaseActivity класс, который имеет метод getActionBarToolbar(), взятый из https://github.com/google/iosched/blob/dfaf8b83ad1b3e7c8d1af0b08d59caf4223e0b95/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, Так что я могу легко получить выборку панели инструментов :

BaseActivity activity = (BaseActivity) getActivity();
activity.getActionBarToolbar().setVisibility(View.GONE);

Жаль, чтоприложение I / O не использовать контекстную панель действий ).

2Frank @

Не запустить его на вашей деятельности, но и на панели инструментов . По Вашему деятельности:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.startActionMode(mActionModeCallback)

и вы должны использовать

<item name="windowActionModeOverlay">true</item>
3kunal.c @

Очень полезный метод, чтобы принести панель инструментов для фронта toolbar.bringToFront()

4Jenkyn @

В моем случае , <item name="windowActionModeOverlay">true</item> не работает, но эта работа : <item name="android:windowActionModeOverlay">true</item> ,android являетсяключевым.

5Daniel Veihelmann @

Простонебольшое дополнение : для < PRE> <item name="windowActionModeOverlay">true</item> , чтобы работать, это важно назвать super.onCreate(savedInstanceState) перед вызовом setContentView(R.layout.your_activity) в вашей деятельности . Это действительно делает разницу в этом случае !