菜单抽屉仅用两根手指打开,用于DrawerLayout

时间:2014-10-14 08:41:02

标签: java android touch swipe drawerlayout

如何为DrawerLayout禁用单指菜单抽屉打开(从左向右滑动),但允许用两根手指轻扫菜单抽屉?

单指滑动不打开抽屉菜单,但是子视图能够处理触摸事件。单手滑动仅禁止菜单打开功能。

更新:我已经阅读了这个非常有用的主题:( Android: Difference between onInterceptTouchEvent and dispatchTouchEvent?)。

所以我决定覆盖方法 onInterceptTouchEvent
public boolean onInterceptTouchEvent(MotionEvent arg) { if (arg.getPointerCount() < 2 && !this.isDrawerOpen(this.listView)) { return true; } else { return super.onInterceptTouchEvent(arg); } }

但显然它不会向儿童视图发送触摸事件。 我想我必须使用LOCK_MODE_LOCKED_CLOSED来控制抽屉的启用/禁用。我稍后会在这里发布该解决方案。

1 个答案:

答案 0 :(得分:0)

我认为这是使用LOCK_MODE执行此任务的解决方案,如果有人有更好的事情,请分享:

@Override
public boolean onInterceptTouchEvent(MotionEvent arg) {
    if (arg.getPointerCount() < 2) {
        if (!this.isDrawerOpen(this.listView)) {
            // The drawer is locked closed. The user may not open it.
            this.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        }
    } else {
        // The drawer is unlocked.
        this.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }

    return super.onInterceptTouchEvent(arg);
}