我一直在关注the navigation drawer guide by Google,我想将它添加到带有标签和手势的活动中。
我想禁用打开导航抽屉的手势,有没有人知道如何做到这一点?
你应该使用:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
它与我合作,打开抽屉的滑动被禁用。
如果它仍然无效,请查看here提供的答案。
锁定你可以这样做:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
并解锁:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
使用setDrawerLockMode()时也添加重力值;
做这个 :
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END);
这应该像魅力一样
要禁用滑动,请在onInterceptTouchEvent
上覆盖onTouchEvent
和DrawerLayout
并让它们返回false。
禁用滑动的答案是正确的。我认为LOCK_MODE_LOCKED_CLOSED在Compat 24.x中工作,但是在较新的compat库中功能已经改变,LOCK_MODE_LOCKED_CLOSED现在完全阻止了导航菜单显示,即使使用汉堡菜单也是如此。
以下课程适合我(Kotlin):
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)
}
}