Ящик меню открывается только двумя пальцами для DrawerLayout

Как я могу отключить открытие ящика меню одним пальцем (проведите пальцем слева направо) для DrawerLayout, но разрешить открытие ящика меню двумя пальцами?

Проведите одним пальцем, чтобы не открывать меню ящика, а дочерние представления, чтобы иметь возможность обрабатывать сенсорные события. Только функция открытия меню должна быть запрещена для смахивания одним пальцем.

Обновление: я прочитал эту очень полезную тему: (Android : разница между onInterceptTouchEvent и 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, чтобы управлять включением/отключением ящика. Я опубликую это решение здесь позже.


person Lyubo Gos    schedule 14.10.2014    source источник


Ответы (1)


Я думаю, что это решение с использованием 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);
}
person Lyubo Gos    schedule 14.10.2014