我一直关注the navigation drawer guide by Google,我想将其添加到带有标签和手势的活动中。
我想禁用打开导航抽屉的手势,有没有人知道如何做到这一点?
答案 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)
这样做:
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
这应该像魅力一样
答案 3 :(得分:3)
要停用滑动,请覆盖onInterceptTouchEvent
上的onTouchEvent
和DrawerLayout
并让它们返回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});