Jak zamknąć szufladę nawigacji po naciśnięciu z niej elementu?

84

Idealnie byłoby, gdyby szuflada nawigacji zamknęła się po naciśnięciu jakiegoś elementu, ale nie dzieje się to automatycznie. Jak to zrobić ? Dzięki!

Vipul J.
źródło
Z której biblioteki korzystasz, aby uzyskać szufladę nawigacji?
Ion Aalbers

Odpowiedzi:

239

Rozumiem!

private DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.closeDrawers();

Działa doskonale.

Vipul J.
źródło
2
Zapytaj o coś, co warto.
AXSM,
3
Czy można go zamknąć bez animacji?
Hamzeh Soboh
1
Hamzeh - mDrawerLayout.closeDrawer (Gravity.LEFT, false); spowodowałoby zamknięcie go bez animacji
Psi-Ed
mDrawerLayout.closeDrawer (GravityCompat.START, false);
user3560827
10

Dla mnie ten działał -

mDrawerLayout.closeDrawer(Gravity.START, false);
Anirban
źródło
5
DrawerLayout mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout)

closeDrawer(); // called when you want to close

public void closeDrawer() {
  if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
    mDrawerLayout.closeDrawer(GravityCompat.START);
  }
}
Ashif
źródło
2

W prawym dolnym rogu onNavigationItemSelected tam, gdzie kończy się przypadek przełącznika, należy to naprawić. mDrawerLayout.closeDrawers ();

public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){

        }
   mDrawerLayout.closeDrawers();
   return true;
}
subbu
źródło
2

Jeśli masz układ mDrawerLayout jako układ szuflady, możesz go zamknąć, gdy jest otwarty.

@Override
public void onBackPressed() {
    if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        this.mDrawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}
M Shafaei N
źródło
1
closeDrawer();//when you want to call

public void closeDrawer() {
    if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawer(GravityCompat.START);
    }
}
Ashif
źródło