禁用在android中打开导航抽屉的滑动手势

时间:2013-06-11 18:25:04

标签: android tabs navigation gesture drawer

我一直关注the navigation drawer guide by Google,我想将其添加到带有标签和手势的活动中。

我想禁用打开导航抽屉的手势,有没有人知道如何做到这一点?

6 个答案:

答案 0 :(得分:386)

您应该使用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

它与我合作,打开抽屉的滑动被禁用。

如果仍然无效,请查看here提供的答案。

答案 1 :(得分:86)

锁定你可以这样做:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

和解锁:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);

答案 2 :(得分:13)

使用setDrawerLockMode();

时也会添加重力值

这样做:

drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);

这应该像魅力一样

答案 3 :(得分:3)

要停用滑动,请覆盖onInterceptTouchEvent上的onTouchEventDrawerLayout并让它们返回false。

答案 4 :(得分:1)

禁用刷卡的答案是正确的。我认为LOCK_MODE_LOCKED_CLOSED在Compat 24.x中可用,但是功能已在较新的compat库中进行了更改,并且LOCK_MODE_LOCKED_CLOSED现在完全阻止了nav菜单的显示,即使使用汉堡菜单也是如此。

以下课程对我有用(科特琳):

class MyDrawerLayout(ctx: Context) : DrawerLayout(ctx) {
  var isSwipeOpenEnabled: Boolean = true

  override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onInterceptTouchEvent(ev)
  }

  @SuppressLint("ClickableViewAccessibility")
  override fun onTouchEvent(ev: MotionEvent): Boolean {
      if (!isSwipeOpenEnabled && !isDrawerVisible(Gravity.START)) {
          return false
      }
      return super.onTouchEvent(ev)
  }
}

答案 5 :(得分:0)

这对我有用

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, {Your drawer view});