【问题标题】:Disable Navigation Drawer in Android [duplicate]在Android中禁用导航抽屉[重复]
【发布时间】:2014-11-21 05:25:33
【问题描述】:

我已经使用official documentation 和一些教程成功实现了一个导航抽屉。这工作得很好。

现在,我添加了一个应用内购买来解锁我的应用的全部功能。这个额外的功能是通过导航抽屉访问的。我有一个布尔值,根据用户是否进行了此购买,它在活动的onCreate() 中获得truefalse 值。

到目前为止一切顺利。

现在,如果布尔值是 false,我不想锁定导航抽屉。什么是好的/正确的方法来做到这一点?我是否需要在抽屉被切换或影响的所有子片段中添加if-else 块?有什么我可以方便使用的万能锁

更新:在查看this 问题后,我尝试在Activity.onCreate() 中使用drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED),但它不起作用

【问题讨论】:

  • 我确实看到了这个问题,但是该功能似乎不起作用。现在更新问题。
  • 您可以尝试按照我在this 答案中的描述制作自定义抽屉。这样你就可以管理按钮的点击,直到变量不为真,因为你只会按照你的意愿打开抽屉。我想你明白我的意思。

标签: android navigation-drawer


【解决方案1】:

你可以这样做。

// enable or disable slide menu
public void setDrawerLayoutEnable(boolean what) {
    if (what) {
        // Drawer will be open through swipe by user
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    } else {
        // User will not be able to open Drawer but it can be open from application programmatically 
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    }
}

这可能对你有帮助。

【讨论】:

  • 我会在哪里调用这个方法?我试图在我的 Activity 的 onCreate() 中调用它,但它没有帮助。
  • 你不需要在任何地方调用它,它只适用于 DrawerLayout 的对象。
  • setDrawerLayoutEnable 不是标准方法。我将不得不在某个地方调用它。 “它只适用于 DrawerLayout 的对象”是什么意思?
  • 是的,它不是覆盖方法。
  • 所以我问我应该在哪里调用它?正如我在我的问题中所说,我已经尝试在我的onCreate() 中调用setDrawerLockMode,但它不起作用。
猜你喜欢
  • 2013-07-06
  • 2018-07-09
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多