Barre d'outils et contextuelle ActionBar avec AppCompat - v7

? ariets @ | Original: StackOverFlow

Je travaille sur l'utilisation de la barre d'outils nouvellement ajoutée qui a été introduit dans Lollipop et la bibliothèque AppCompat - v7 . Je ai suivi http://antonioleiva.com/material-design-everywhere/ sur la configuration de la barre d'outils, je ai remarqué que lorsque vous appelez quelque chose qui va faire apparaître le ActionBar contextuel ( par exemple en insistant texte pour copier / coller), qu'il va pousser la barre d'outils en bas de la page . Vous pouvez voir ce que je parle dans l'image au bas de la page :

Donc, essentiellement, je l'ai mis comme ça . Je ai la barre d'outils définie dans un fichier xml que je utilise avec inclure des balises :

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

Ensuite, je instancier à mon avis :

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

Dans le code, je le configurer comme ceci:

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

Est-ce que quelqu'un sait comment faire en sorte que le contextuelles ActionBar vient overtop de la barre d'outils ?

Barre d'outils et contextuelle ActionBar avec AppCompat - v7



Top 5 Respuesta

1Jacob Ras @ Update:

Solution: utiliser la propriété http://developer.android.com/reference/android/R.attr.html#windowActionModeOverlay . Réglez dans votre thème :

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

et l' actionmode sera affiché sur la barre au lieu de pousser vers le bas d'action . ( Si vous ne utilisez pas la dernière AppCompat alors vous devez ajouter le " android: " préfixe à la propriété ) .

Old answer/workaround:

Je ai couru dans le même problème . Peu importe quel thème je ai mis, il pousse toujours vers le bas la barre d'outils que je ai mis ActionBar . Je ai essayé avec et sans la bibliothèque de soutien, mais cela n'a pas d'importance.

Malheureusement, je ne étais pas capable de le réparer alors je ai construit une solution de contournement à la place. Dans mon ActionModeCallback s ' onCreateActionMode Je masquer la barre d'action :

actionBarToolbar.setVisibility(View.GONE);

et dans onDestroyActionMode je le montre à nouveau :

actionBarToolbar.setVisibility(View.VISIBLE);

La masquer / afficher arrive si rapidement, il ne est pas perceptible sur mes appareils de test . Il ya bien sûr un inconvénient : si le - animation entrer fonctionne toujours, la sortie - animation de la barre d'action contextuelle se perd parce que la barre d'outils apparaît immédiatement sur ​​elle . Mais jusqu'à ce que nous rencontrons une meilleure solution que je suppose que nous sommes coincés avec ce .

( Mon activité est effectivement étend une coutume BaseActivity classe qui possède une méthode appelée «____», tiré de la https://github.com/google/iosched/blob/dfaf8b83ad1b3e7c8d1af0b08d59caf4223e0b95/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, Donc je peux facilement obtenir chercher la barre d'outils :

getActionBarToolbar()

Dommage l'application E / S ne utilise pas la barre d'action contextuelle . )



2Frank @

Ne commencez pas sur votre activité, mais sur votre barre d'outils . En vous activité :

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

et vous devez utiliser

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.startActionMode(mActionModeCallback)
3kunal.c @

Méthode très utile d'apporter barre d'outils à l'avant <item name="windowActionModeOverlay">true</item>

4Jenkyn @

Dans mon cas , toolbar.bringToFront() ne fonctionnait pas , mais ce travail : «____», le «____» est la clé .

5Daniel Veihelmann @

Juste un petit plus : pour

 <item name="windowActionModeOverlay">true</item>  pour fonctionner, il est important d'appeler <item name="android:windowActionModeOverlay">true</item> Avant d'appeler android dans votre activité.
Il fait vraiment une différence dans ce cas !