Як закрити шухляду навігації, коли на неї натискають елемент?


84

В ідеалі шухляда навігації повинна закриватися, коли від неї натискають якийсь предмет, але це не відбувається автоматично. Як це зробити ? Дякую!


Яку бібліотеку ви використовуєте для отримання шухляди навігації?
Ion Aalbers

Відповіді:


239

Зрозумів!

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

Працює чудово.


2
Запитайте щось, що варто.
AXSM

3
Чи можна його закрити без анімації?
Хамзе Собох

1
Хамзе - mDrawerLayout.closeDrawer (Gravity.LEFT, false); призведе до його закриття без анімації
Psi-Ed

mDrawerLayout.closeDrawer (GravityCompat.START, false);
user3560827


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

У правому нижньому куті onNavigationItemSelected, де закінчується корпус комутатора, ви повинні це зробити. mDrawerLayout.closeDrawers ();

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

        }
   mDrawerLayout.closeDrawers();
   return true;
}

2

Якщо у вашому макеті шухляди є mDrawerLayout, ви можете закрити його, коли він відкритий.

@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);
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.