72

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

4

6 回答 6

172

这对我有用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

您可以通过点击主页按钮展开抽屉,并可以使用从右到左的滑动手势将其关闭。但是,不再触发从左到右的滑动。

于 2013-07-18T04:21:06.540 回答
22

对于setDrawerLockMode(),这是在代码中,但不在Android 开发者文档中:

/**
 * 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;
于 2014-04-08T17:48:05.283 回答
4

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

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

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

于 2013-07-12T07:26:52.517 回答
3

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

android:layout_gravity="right"

或者

android:layout_gravity="left"

对于抽屉内容和使用.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)一切都会好的。

但万一什么时候android:layout_gravity="left|center_vertical"或类似的东西LOCK_MODE_LOCKED_CLOSED不起作用。

于 2017-12-15T11:21:21.443 回答
3

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

于 2018-09-04T06:50:38.043 回答
2

这对我有用:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

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

于 2018-05-12T10:22:37.490 回答