Toolbar e Contextual ActionBar com AppCompat - v7

? ariets @ | Original: StackOverFlow
---

Eu estou trabalhando em utilizar a barra recém-adicionado que foi introduzido no Lollipop ea biblioteca AppCompat - v7 . Segui http://antonioleiva.com/material-design-everywhere/ sobre como configurar o Toolbar notei que quando você chamar algo que fará com que o ActionBar contextual (como realçar o texto para copiar / colar ), que vai empurrar a barra de ferramentas para baixo na página . Você pode ver o que eu estou falando sobre a imagem na parte inferior da página:

Então, essencialmente, eu configurá-lo como este. Tenho a Toolbar definido em um arquivo xml que eu uso com incluem tags:

<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"/>

Então, eu instanciar -lo na minha opinião:

<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>

No código, eu configurá-lo da seguinte forma:

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

Alguém sabe como fazê-lo de modo que o ActionBar Contextual vem overtop da barra de ferramentas ?

Toolbar e Contextual ActionBar com AppCompat - v7

---

Top 5 Responder

1Jacob Ras @ Update:

Solução: use a propriedade http://developer.android.com/reference/android/R.attr.html#windowActionModeOverlay . Defina esta em seu tema :

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

eo actionmode será mostrado sobre a barra em vez de empurrá -lo para baixo ação. ( Se você não está usando a mais recente AppCompat então você precisa adicionar o " android: " prefixo para a propriedade ) .

Old answer/workaround:

Corri para o mesmo problema. Não importa o que eu tema definido, ele sempre empurra para baixo a barra de ferramentas eu definir como ActionBar . Eu tentei com e sem a biblioteca de apoio, mas isso não importava .

Infelizmente eu não era capaz de corrigi-lo assim que eu construí uma solução em vez . Na minha ActionModeCallback ' s onCreateActionMode Eu ocultar a barra de ação :

actionBarToolbar.setVisibility(View.GONE);

e em onDestroyActionMode Eu mostrá-lo novamente :

actionBarToolbar.setVisibility(View.VISIBLE);

O esconderijo / exibição acontece tão rapidamente que não é perceptível em meus dispositivos de teste . Há, claro, um lado negativo : embora a - animação entrar ainda funciona, o - animação de saída da barra de ação contextual se perde porque a barra de ferramentas aparece imediatamente sobre ele. Mas até que nos deparamos com uma solução melhor do que eu acho que estamos presos a isso.

( Minha Atividade é realmente estender uma custom BaseActivity classe que tem um método chamado getActionBarToolbar(), tirada do https://github.com/google/iosched/blob/dfaf8b83ad1b3e7c8d1af0b08d59caf4223e0b95/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, Para que eu possa facilmente obter buscar a Barra de Ferramentas:

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

Pena que o app I / O não usa a barra de ação contextual. )

2Frank @

Não iniciá-lo em sua atividade, mas em sua barra de ferramentas . Em você atividade:

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

e você tem que usar

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

Método muito útil para trazer barra de ferramentas para frente toolbar.bringToFront()

4Jenkyn @

No meu caso, <item name="windowActionModeOverlay">true</item> não funcionou, mas este trabalho : <item name="android:windowActionModeOverlay">true</item>, o android é a chave .

5Daniel Veihelmann @

Apenas um pequeno acréscimo : para

 <item name="windowActionModeOverlay">true</item>
  para trabalhar é importante chamar de super.onCreate(savedInstanceState) antes de chamar setContentView(R.layout.your_activity) em sua atividade .
Ele realmente faz a diferença neste caso!