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!


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.


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);

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);
  }
}

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;
}

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();
    }
}

1
closeDrawer();//when you want to call

public void closeDrawer() {
    if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawer(GravityCompat.START);
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.