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


84

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


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

Ответы:


239

Понял!

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

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


2
Спросите то, что стоит.
AXSM

3
Можно ли его закрыть без анимации?
Hamzeh Soboh

1
Hamzeh - mDrawerLayout.closeDrawer (Gravity.LEFT, ложь); приведет к его закрытию без анимации
Psi-Ed

mDrawerLayout.closeDrawer (GravityCompat.START, ложь);
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.