Symbolleiste und Kontext ActionBar mit AppCompat - v7

? ariets @ | Original: StackOverFlow
---

Ich bin über die Verwendung der neu hinzugefügte Symbolleiste, die Lutscher und dem AppCompat - v7 -Bibliothek eingeführt arbeitete. Ich folgte http://antonioleiva.com/material-design-everywhere/ zum Einrichten der Symbolleiste Ich bemerkte, dass, wenn Sie etwas, das bringt das Kontext ActionBar (wie Hervorheben von Text für Kopieren / Einfügen ) berufen, dass es zu schieben die Symbolleiste unten auf der Seite. Sie können sehen, was ich spreche, in der Bild am unteren Rand der Seite:

Also, im Grunde, habe ich es so. Ich habe das in einer XML-Datei, die ich benutze sind mit Tags definiert Toolbar :

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

Dann instanziieren ich es aus meiner Sicht :

<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 Code, habe ich es wie folgt:

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

Wer weiß, wie es zu machen, so dass der Kontext ActionBar kommt overtop der Toolbar ?

Symbolleiste und Kontext ActionBar mit AppCompat - v7

---

Top 5 Antwort

1Jacob Ras @ Update:

Lösung: Verwenden Sie den http://developer.android.com/reference/android/R.attr.html#windowActionModeOverlay Eigentum. Setzen Sie diese in Ihr Thema :

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

und die actionmode wird über die Aktionsleiste, anstatt nach unten drücken angezeigt. ( Wenn Sie nicht mit der neuesten AppCompat dann müssen Sie die " Android: " add -Präfix an der Immobilie ) .

Old answer/workaround:

Ich lief in das gleiche Problem . Egal, welches Thema ich, es ist immer drückt die Toolbar ich als ActionBar gesetzt . Ich habe versucht, mit und ohne Support-Bibliothek, aber es spielte keine Rolle.

Leider war ich nicht in der Lage, es zu beheben, damit ich einen Workaround, anstatt gebaut. In meinem ActionModeCallback 's onCreateActionMode Ich verstecke die Aktionsleiste :

actionBarToolbar.setVisibility(View.GONE);

und in onDestroyActionMode Ich wieder zeigen es :

actionBarToolbar.setVisibility(View.VISIBLE);

Das Ein- / Ausblenden geschieht so schnell, es ist nicht auf meinem Testgeräten bemerkbar. Natürlich gibt es eine Kehrseite : Auch wenn Sie die Enter - Animation funktioniert immer noch, die Ausfahrt - Animation des Kontextaktionsleisteverloren, weil der Toolbar Springt er sofort darüber. Aber bis wir auf eine bessere Lösung Ich denke, wir stecken mit diesem.

( Meine Aktivität tatsächlich die sich eine eigene BaseActivity Klasse, die eine Methode namens hat getActionBarToolbar(), aus der entnommen https://github.com/google/iosched/blob/dfaf8b83ad1b3e7c8d1af0b08d59caf4223e0b95/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java, So kann ich leicht zu holen die Toolbar :

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

Schade, dass die E / A- App nicht über das Kontextaktionsleiste. )

2Frank @

Beginnen Sie nicht auf Ihrer Tätigkeit, sondern in Ihrer Symbolleiste . In Ihnen Aktivität :

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

und Sie verwenden müssen

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

Sehr nützliche Methode zur Werkzeugleiste, um vorne zu bringen toolbar.bringToFront()

4Jenkyn @

In meinem Fall , <item name="windowActionModeOverlay">true</item> hat nicht funktioniert, aber diese Arbeit : <item name="android:windowActionModeOverlay">true</item>, die android ist der Schlüssel.

5Daniel Veihelmann @

Nur ein kleiner Zusatz : für

 <item name="windowActionModeOverlay">true</item>
  zu arbeiten ist es wichtig zu nennen super.onCreate(savedInstanceState) vor dem Aufruf von setContentView(R.layout.your_activity) in Ihrer Tätigkeit .
Es macht wirklich einen Unterschied in diesem Fall !