当从导航抽屉中选择某个项目时如何关闭它?

89

理想情况下,导航抽屉应在从中选择某个项目后自动关闭,但实际上并没有发生。如何做到这一点? 谢谢!


你使用哪个库来获取导航抽屉? - Ion Aalbers
7个回答

251

明白了!

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

工作完美无缺。


4
可以不带动画地关闭吗? - Hamzeh Soboh
1
Hamzeh - mDrawerLayout.closeDrawer(Gravity.LEFT, false); 的执行会导致抽屉关闭但不带有动画效果。 - Psi-Ed
mDrawerLayout.closeDrawer(GravityCompat.START, false); --> mDrawerLayout.closeDrawer(GravityCompat.START, false); - user3560827

13
对我而言,这个起作用了 -
mDrawerLayout.closeDrawer(Gravity.START, false);

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

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

public void closeDrawer() {
    if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawer(GravityCompat.START);
    }
}

4
如果您的抽屉布局是mDrawerLayout,您可以在它打开时关闭它。
@Override
public void onBackPressed() {
    if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        this.mDrawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

3
在onNavigationItemSelected的右下角,当switch case语句结束时,你应该这样写:mDrawerLayout.closeDrawers();
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){

        }
   mDrawerLayout.closeDrawers();
   return true;
}

1
这是一段关于编程的 Kotlin 代码。
drawerLayout.closeDrawer(GravityCompat.START)

嗨,谢谢你的回答,但这是多个其他答案的重复,例如这个 - Elikill58

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接