在DrawerLayout上禁用手势监听器

时间:2013-06-10 14:14:02

标签: android drawerlayout

如何禁用DrawerLayout的手势识别? (从左向右滑动)并且只接受关闭手势(从右到左)并使用主页按钮打开抽屉?

6 个答案:

答案 0 :(得分:151)

这对我有用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

您可以通过点按“主页”按钮展开抽屉,也可以使用从右向左轻扫手势来关闭它。但是,不再触发从左向右滑动。

答案 1 :(得分:19)

对于setDrawerLockMode(),这是在代码中,而不在 Android developer文档上:

/**
 * 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;

答案 2 :(得分:3)

要禁用DrawerLayout手势识别,请使用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

然后,要启用从右向左滑动,请检查以下资源: http://android-journey.blogspot.com/2010/01/android-gestures.html

答案 3 :(得分:2)

看起来我发现了bug。例如,如果设置:

android:layout_gravity="right"

android:layout_gravity="left"

对于抽屉内容并使用.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)一切都会没问题。

但是,如果android:layout_gravity="left|center_vertical"或类似LOCK_MODE_LOCKED_CLOSED之类的内容不起作用。

答案 4 :(得分:0)

这对我有用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

您可以通过点击必须触发的汉堡图标或按钮来展开抽屉。但是,不再触发从左向右滑动。

答案 5 :(得分:0)

如今,LOCK_MODE_LOCKED_CLOSED完全阻止了导航菜单的显示,即使通过汉堡菜单(可能是不需要的)也是如此。以下内容对我有用:https://stackoverflow.com/a/52160351/377320