阻止在主页按钮上打开NavigationDrawer单击

时间:2015-04-21 19:46:16

标签: android navigation-drawer

我的主要活动有一个NavigationDrawer,在一个实例中我显示了一个片段,“汉堡菜单”变成了一个箭头。

当使用此

显示该片段时,我禁用了通过滑动打开抽屉的功能
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

它工作正常但现在问题是用户仍然可以通过单击主页按钮“箭头”打开抽屉。我希望箭头作为后退按钮而不打开抽屉,这样我怎样才能阻止抽屉打开?

4 个答案:

答案 0 :(得分:6)

我猜您需要在工具栏上使用setNavigationOnClickListener()来覆盖抽屉行为。

喜欢 -

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
        // logic to decide if drawer open/close, or pop fragment etc
     }
});

这可以通过单击图标来防止抽屉打开。但它通过刷卡打开。但是你已经照顾好了。所以这应该有用。

注意仅在通过调用

设置ActionBarDrawerToggle后才能生效
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout,  toolbar, R.string.openDrawer, R.string.closeDrawer){ ...

答案 1 :(得分:1)

把它放在你的活动上:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getId() == android.R.id.home){
        doSomething(); //can be a finish()
    }
}

或者,from this answer

mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        popStackIfNeeded();
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        mActionBar.setDisplayHomeAsUpEnabled(false);
        mDrawerToggle.setDrawerIndicatorEnabled(true);
    }
});

答案 2 :(得分:0)

您可以尝试覆盖onOptionsItemSelected检查id android.R.id.home并调用finish()返回到之前的活动。

答案 3 :(得分:0)

尝试覆盖选项项目选择。

   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
          switch (item.getItemId()) {
             case android.R.id.home :
                // do what you want
                return true;
          }
          return true;
       }