Der Titel erklärt alles. Ich möchte nur wissen, ob die Navigationsschublade geöffnet ist oder nicht. Ich habe viel im Internet gesucht und die Methode gefunden isDrawerOpen(int drawerGravity)
, konnte aber keine zufriedenstellende Antwort finden, die erklärt, wie man sie in einer Methode verwendet. Ich würde mich freuen, wenn mir jemand das erklärt.
Danke im Voraus!
android
android-navigation
Chinmay Dabke
quelle
quelle
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList)
. mDrawerLayout ist die Schublade und mDrawerList ist die ListenansichtAntworten:
Angenommen, Sie haben ein Schubladenlayout in XML definiert:
quelle
Dieser Hörer benutzt :)
quelle
Verwenden:
mDrawerLayout.isDrawerOpen () -Methode
Beispiel:
quelle
Auf folgende Weise können Sie feststellen, dass die Schublade geöffnet oder geschlossen ist.
quelle
Die Antwort von ShakeJ ist die richtige, und denken Sie daran, dass Sie die onDrawerSlide verwenden können, um andere Funktionen auszulösen. Ich habe sie beispielsweise zum Ändern der Statusleistenfarbe verwendet.
quelle
Erkennen Sie
DrawerLayout
geöffnete, geschlossene und verschobene DrawerLayout.DrawerListenerÜberprüfen Sie, ob die Schublade geöffnet ist
quelle
Die Methode ist die gleiche in Kotlin.
Initialisieren Sie die DrawerLayout- Ansicht
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
Überprüfen Sie, ob die Schublade geöffnet ist
if(drawerLayout.isDrawerOpen(GravityCompat.START)){ Log.d("Drawer","open") }
Wenn Sie beim Öffnen oder Schließen der Schublade automatisch Maßnahmen ergreifen möchten, haben Sie folgende Möglichkeiten.
Erstellen Sie in Ihrer Hauptaktivität eine innere Klasse, die eine Unterklasse von DrawerLayout.DrawerListener ist . Die DrawerLayout-Klasse implementiert die DrawerListener-Schnittstelle.
Fügen Sie Ihre Aktion in die Funktion ein, die Sie verwenden möchten. In meinem Beispiel schließe ich die Softtastatur, wenn der Benutzer mit der Navigationsleiste interagiert. Deklarieren Sie den InputMethodManager in Ihrer Hauptaktivität folgendermaßen:
var imm: InputMethodManager = this.getSystemService(Activity.INPUT_METHOD_SERVICE)
Fügen Sie Ihren benutzerdefinierten DrawerListener zum drawerLayout hinzu (ich habe ihn in die onCreate-Methode eingefügt).
var drawerListener = CustomDrawer()
drawerLayout.addDrawerListener(drawerListener)
quelle
Möglicherweise bin ich zu spät, kann aber neue aktualisierte Informationen weitergeben. In dem angegebenen Code setze ich das Öffnen / Schließen der Schublade in der On-Click-Funktion. Wenn die Schublade geöffnet ist, wird sie geschlossen, andernfalls wird sie geöffnet. Diese Lösung basiert auf RXava DrawerLayout
(androidx.drawerlayout.widget.DrawerLayout)
. In meinem Code öffne ich das Schubladenlayout von rechts nach links.Hinweis: Wenn Sie drawerLayout von rechts öffnen, verwenden Sie "GravityCompat.END" und es ist von links geöffnet. Verwenden Sie dann "GravityCompat.START" . Viel Spaß beim Codieren .....
quelle