Как закрыть панель навигации при нажатии на элемент из нее?

84

В идеале панель навигации должна закрываться после того, как из нее был нажат какой-либо элемент, но это не происходит автоматически. Как это сделать ? Благодаря!

Vipul J
источник
Какую библиотеку вы используете для получения панели навигации?
Ион Алберс 05

Ответы:

239

Понял!

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

Работает отлично.

Vipul J
источник
2
Спросите то, что стоит.
AXSM
3
Можно ли его закрыть без анимации?
Hamzeh Soboh
1
Hamzeh - mDrawerLayout.closeDrawer (Gravity.LEFT, ложь); приведет к его закрытию без анимации
Psi-Ed
mDrawerLayout.closeDrawer (GravityCompat.START, ложь);
user3560827
10

Для меня это сработало -

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

В правом нижнем углу onNavigationItemSelected, где заканчивается корпус переключателя, вы должны это исправить. mDrawerLayout.closeDrawers ();

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

        }
   mDrawerLayout.closeDrawers();
   return true;
}
subbu
источник
2

Если у вас есть mDrawerLayout в качестве макета ящика, вы можете закрыть его, когда он открыт.

@Override
public void onBackPressed() {
    if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        this.mDrawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}
M Shafaei N
источник
1
closeDrawer();//when you want to call

public void closeDrawer() {
    if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawer(GravityCompat.START);
    }
}
Ашиф
источник