2014-11-22 69 views
7

我在我的应用程序中工作得很好,我有一个导航抽屉(appcompat v7)。Android DrawerLayout.setDrawerLockMode()不起作用

现在我想禁用它,直到用户购买应用内购买来解锁附加功能。所以在我的Activity.onCreate(),初始化抽屉和填充之后,我调用这个函数:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

此功能没有做任何事情。在操作栏中轻敲抽屉克拉后,抽屉会继续正常打开和关闭。我试着在Activity.onResume()中调用这个函数没有任何区别。

什么是使用此功能的正确方法? (我试着在网上寻找答案,但找不到解决我的问题的任何东西)。任何帮助表示赞赏,因为我在这个问题上停留了很长一段时间。

回答

5

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

只能通过刷,直到你点击抽屉式导航栏图标 保持布尔变量

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);onStart(),也写下面的代码行禁止开抽屉布局

@Override 
    public boolean onOptionsItemSelected(android.view.MenuItem item) { 

     if(!disabled) 
     { 
     if (item.getItemId() == android.R.id.home) { 

      if (mDrawerLayout.isDrawerOpen(mDrawerLinearLayout)) { 
       mDrawerLayout.closeDrawer(mDrawerLinearLayout); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerLinearLayout); 
      } 
     } 
     } 
     return super.onOptionsItemSelected(item); 
    } 

这将工作肯定

+0

如果你觉得这个代码会去setDrawerLockMode(int)? – rgamber 2014-11-22 05:14:17

+0

当选择溢出菜单中的项目时,不会在选择导航抽屉中的项目时调用onOptionsItemSelected。 – rgamber 2014-11-22 05:17:54

+0

这就是为什么我写item.getItemId()== android.R.id.home 它是所谓的当导航抽屉点击主页按钮 – 2014-11-22 05:19:02

3

当您拨打setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)它通过滑动锁定打开和关闭抽屉只有

由于您的抽屉仍然会响应openDrawer(int),closeDrawer(int)的调用,但抽屉被锁定后,抽屉会继续正常打开和关闭,因为抽屉会在操作栏中轻敲抽屉克拉。 您需要在您的操作栏菜单按钮侦听器中添加一些逻辑,并且在您不想打开时不要调用openDrawer(int)。

顺便说一句,这是好的调用onСreate