Подтвердить что ты не робот

Отключить прослушиватель жестов в DrawerLayout

Как отключить распознавание жестов для DrawerLayout? (проведите по экрану слева направо) и принимайте только строчный жест (справа налево) и откройте ящик только с помощью кнопки "домой"?

4b9b3361

Ответ 1

Это сработало для меня:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Вы можете развернуть ящик, нажав кнопку "Домой", и можете использовать жестом салфетки справа налево, чтобы отменить его. Однако прокрутка влево-вправо больше не запускается.

Ответ 2

Для setDrawerLockMode() это находится в коде, но не в разработчике Android docs:

/**
 * The drawer is unlocked.
 */
public static final int LOCK_MODE_UNLOCKED = 0;

/**
 * The drawer is locked closed. The user may not open it, though
 * the app may open it programmatically.
 */
public static final int LOCK_MODE_LOCKED_CLOSED = 1;

/**
 * The drawer is locked open. The user may not close it, though the app
 * may close it programmatically.
 */
public static final int LOCK_MODE_LOCKED_OPEN = 2;

Ответ 3

Чтобы отключить распознавание жестов DrawerLayout, используйте:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

Затем, чтобы включить прокрутку справа налево, проверьте этот ресурс: http://android-journey.blogspot.com/2010/01/android-gestures.html

Ответ 4

Похоже, я нашел ошибку. Например, если установлено:

android:layout_gravity="right"

или

android:layout_gravity="left"

для содержимого ящика и использования .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) все будет в порядке.

Но если android:layout_gravity="left|center_vertical" или что-то вроде этого LOCK_MODE_LOCKED_CLOSED не будет работать.