Navigationsschublade deaktivieren, Home-Button / Up-Indikator fragmentarisch umschalten

Die Einrichtung

Ich habe eine Aktivität, deren contentView eine Instanz von a istDrawerLayout, in der eine Navigationsleiste mit einer Schubladenanzeige in der Aktionsleiste angezeigt wird. Die Aktivität enthält aFragmentNennen wir esListFragment, die eine Liste von Optionen enthält. Wenn eine Option angeklickt wird, ersetze ich dieListFragment mit einerDetailFragment.

An dieser Stelle möchte ich anstelle der Navigationsschubladenanzeige eine Aufwärtsnavigationsoption anzeigen. Ich kann das Symbol "Nach oben" anzeigen, wenn ich die Schubladenanzeige durch einen Anruf deaktivieremDrawerToggle.setDrawerIndicatorEnabled(false)Hierdurch wird jedoch nur das Schubladensymbol entfernt, nicht jedoch die Funktionalität. Wenn ich also auf die Einfügemarke klicke, wird die Navigationsschublade immer noch geöffnet.

Außerdem möchte ich in diesen Unteransichten das Öffnen der Schublade deaktivieren, indem ich vom Rand des Bildschirms ziehe. Ich habe versucht, dies durch einen Anruf zu tunsetDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) aber es scheint nicht diese Funktionalität deaktiviert zu haben.

Ich habe versucht, das zu erweiternActionBarDrawerToggle Klasse, um das Öffnen der Schublade zu verhindern, wenn auf den Indikator geklickt wird. Es wird jedoch nur die überschreibende Aktion (die Aufwärtsnavigation) ausgeführt, jedoch die Schubladeöffnet immer noch.

Ich habe auch die Schritte in implementiertWechseln zwischen dem Android Navigation Drawer-Bild und dem Up Caret, wenn Fragmente verwendet werden . Es funktioniert so weit wie die Anzeige des Einfügemarke geht, aber trotz Überschreiben der Funktion der Aufwärtstaste wird das Menü weiterhin geöffnet (die App navigiert zurück - es öffnet nur auch die Schublade).

Frage

Also, lange Rede kurzer Sinn: Gibt es einen (am besten sauberen und eleganten, aber an diesem Punkt werde ich mit hacky gehen) Weg, um diese Dinge zu erreichen, wenn meine Layoutwurzel a ist?DrawerLayout:

Ersetzen Sie die Schubladenanzeige durch ein "Auf" - Caret (vorläufig möglich übermDrawerToggle.setDrawerIndicatorEnabled(false))Verhindern Sie, dass sich die Schublade öffnet, wenn auf das Caret geklickt wird, und überschreiben Sie es stattdessen mit meiner eigenen "Auf" -FunktionalitätVerhindern Sie, dass sich die Schublade öffnet, wenn ich vom Bildschirmrand ziehe.Bearbeiten

Okay, es sieht so aus, als ob ich beide außer Kraft setzen würdeActionBarDrawerToggle UNDonOptionsItemSelectedöffnet sich das Menü nicht, wenn ich auf das Caret klicke. Aber es öffnet sich immer noch, wenn ich vom Rand ziehe. Hilfe!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage