Mit der neuen NavigationView
ist es immer noch empfohlen, um zu verwenden ActionBarDrawerToggle
oder ist das nicht "Material Design"? Zum Beispiel vorher sollten wir ausblenden " bar-Elemente, wenn die Schublade geöffnet wurde, jetzt aber die Richtlinien sagen, dass Sie bleiben sollten.
Nein, es ist nicht erforderlich.
Wenn man sich die "offizielle" demo-code für die neue Design-Bibliothek
ActionBarDrawerToggle
wird nicht mehr verwendet, da die neueNavigationView
undAppCompatActivity
brauche es nicht.Mit der neuen v22-support-Bibliothek, können Sie Streifen aus alle Ihre
ActionBarDrawerToggle
code und verwenden Sie einfach die folgende behandeln die Interaktion zwischenNavigationDrawer
und dieActionBar
/ToolBar
hamburger-Symbol:Müssen Sie Ihre eigenen "hamburger" drawable (
R.drawable.ic_menu
in meinem Beispiel). Außer, dass der obige code ist alles, was notwendig zu behandeln öffnen der Schublade. Dieandroid.R.id.home
Fall inonOptionsItemSelected()
stellt die hamburger Schiebeknopf. Es verweist auf ein integriertes resource-id (nicht etwas, das Sie hinzufügen, die Sie im Menü xml), und es ist automatisch behandelt.Außerdem müssen Sie implementieren, schließen Sie die Schublade, indem Sie einfach
closeDrawers()
zu Ihrem Klick-listener, wie diese:closeDrawers()
ist eine Methode, DrawerLayout, und kümmert sich um alles. Das ist es. Das ist alles code, den Sie wirklich brauchen, um richtig zu behandeln, navigation Schubladen jetzt. Nicht mehr chaotisch-code für flipping Hamburger und solche!Natürlich, wenn Sie wirklich wollen, können Sie immer noch
NavigationView
mitActionBarDrawerToggle
den alten Weg. Aber Sie sicherlich nicht haben, um.Wenn Sie möchten, Schublade Rückrufe
Obwohl
ActionBarDrawerToggle
ist nicht erforderlich, um öffnen/schließen der Schublade, kann es immer noch nützlich für den Umgang mit weitere Rückrufe (vor allem wenn Sie mit ActionBar schon). Andernfalls können Sie die Umsetzung Ihrer eigenen mithilfeDrawerLayout.DrawerListener
oder mitDrawerLayout.SimpleDrawerListener()
, mit anderen öffnen/schließen-bezogene Ereignisse.Ja. Die beiden bekämpfen sich zwei völlig verschiedene Aspekte der navigation Schublade.
Insgesamt gibt es in der Regel drei Komponenten zu einem Navigations Schublade:
DrawerLayout
Den
DrawerLayout
ist das layout, das hält den navigation drawer Inhalte und die Inhalte Ihrer app. Es ist, was ermöglicht es Ihnen, ziehen Sie die Schublade von der Seite und Anzeige der Schublade über die Inhalte Ihrer app (das erste Kind derDrawerLayout
).Ihre navigation Schublade Inhalt (das zweite Kind von Ihrem
DrawerLayout
) ist in der Regel eine Liste der Elemente, die der Benutzer klicken kann. Zuvor, die meisten Implementierungen, die ich gesehen habe, verwendet einListView
oder eineRecyclerView
und vielleicht einen header von einer Art sein.NavigationView
ist ein Ersatz für dieses, und wird verwendet, um Material-konforme Schublade Inhalt.ActionBarDrawerToggle
verwendet wird, um die hamburger-Symbol in der app-Leiste. Es ist, was können die Benutzer Tippen Sie auf das Symbol, um öffnen oder schließen der Schublade.Abschluss der anderen Antworten, die Navigation Anzeigen, sollten fit sein in den ganzen Bildschirm in die Höhe, so wird es zu verbergen die hamburger-Symbol, wenn Sie geöffnet. Weil dieses, dass die animation von burger Pfeil oder auch nur zeigt der Pfeil ist nicht notwendig.
Aber beim Klick auf das aktuelle Bild geht es zu einem anderen fragment, stellen Sie sich eine Galerie von Fotos und durch klicken auf ein Foto wird es zeigen größer, es sollte eine animation von burger Pfeil, und der Pfeil sollte bleiben und, wenn Sie gedrückt werden, sollte es eine reverse-animation, um die burger, so die Navigationsansicht wieder geöffnet werden kann.
Können Sie erreichen dies mit ActionBarDrawerToggle immer noch, auch mit der navigation anzeigen, weil es verwendet die gleichen DrawerLayout wie vorher. Also es hat immer noch verwendet, aber natürlich nicht notwendig.