Toolbar e contestuale ActionBar con AppCompat - v7

? ariets @ | Original: StackOverFlow
---

Sto lavorando con la barra degli strumenti appena aggiunto che è stato introdotto nel Lollipop e la libreria AppCompat - v7 . Ho seguito http://antonioleiva.com/material-design-everywhere/ sulla configurazione della barra degli strumenti ho notato che quando si richiama qualcosa che porterà il ActionBar contestuale ( ad esempio evidenziare il testo per copia / incolla ), che spingerà la barra degli strumenti in basso alla pagina . Si può vedere che cosa sto parlando nell'immagine in fondo alla pagina :

Quindi, in sostanza, ho impostato in questo modo . Ho la Toolbar definito in un file xml che uso con includere tag :

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

Poi, ho un'istanza a mio avviso :

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

In codice, impostare il tutto in questo modo:

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

Qualcuno sa come fare in modo che il ActionBar contestuale viene overtop della Toolbar ?

Toolbar e contestuale ActionBar con AppCompat - v7

---

Top 5 Risposta

1Jacob Ras @ Update:

Soluzione : utilizzare la proprietà http://developer.android.com/reference/android/R.attr.html#windowActionModeOverlay . Impostare questo in tema :

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

e il actionmode verrà mostrato sopra la barra delle azioni invece di spingere verso il basso . ( Se non si sta utilizzando l'ultima AppCompat allora avete bisogno di aggiungere il " android: " il prefisso alla proprietà ) .

Old answer/workaround:

Ho incontrato lo stesso problema . Non importa quello che ho impostato tema, spinge sempre verso il basso la barra degli strumenti ho impostato come ActionBar . Ho provato con e senza la libreria di supporto, ma non importava .

Purtroppo non sono riuscito a risolvere il problema così ho costruito una soluzione invece . Nel mio ActionModeCallback s ' onCreateActionMode Io nascondere la barra delle operazioni :

actionBarToolbar.setVisibility(View.GONE);

e in onDestroyActionMode mostro di nuovo :

actionBarToolbar.setVisibility(View.VISIBLE);

Il nascondiglio / proiezione avviene così rapidamente che non si nota sui miei dispositivi di prova . C'è, naturalmente, un rovescio della medaglia : anche se la inserisci animazione funziona ancora, l'uscita - animazione della barra delle azioni contestuale si perde, perché la barra degli strumenti si apre immediatamente su di esso . Ma fino a quando ci imbattiamo in una soluzione migliore credo che siamo bloccati con questo .

( La mia attività è in realtà estendendo una consuetudine BaseActivity classe che ha un metodo chiamato getActionBarToolbar(), tratto dal https://github.com/google/iosched/blob/dfaf8b83ad1b3e7c8d1af0b08d59caf4223e0b95/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, Così posso ottenere facilmente recuperare la barra degli strumenti :

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

Peccato che la / O app io non utilizza la barra delle azioni contestuale . )

2Frank @

Non avviarlo sulla vostra attività, ma sulla barra degli strumenti . In voi l'attività :

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

e si deve utilizzare

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

Metodo molto utile per portare la barra degli strumenti di front toolbar.bringToFront()

4Jenkyn @

Nel mio caso , <item name="windowActionModeOverlay">true</item> non ha funzionato , ma questo lavoro : <item name="android:windowActionModeOverlay">true</item>, il android è la chiave .

5Daniel Veihelmann @

Solo una piccola aggiunta : per < pre > <item name="windowActionModeOverlay">true</item> < / pre > per lavorare è importante chiamare super.onCreate(savedInstanceState) prima di chiamare setContentView(R.layout.your_activity) nella vostra attività . Si fa davvero la differenza in questo caso !