在 DrawerLayout 上禁用手势侦听器

如何禁用抽屉布局的手势识别?(向左向右滑动) ,只接受关闭手势(向右向左)和打开抽屉只是与主页按钮?

30636 次浏览

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

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);

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

这对我很有效:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

你可以通过点击 Home 按钮来扩展抽屉,并且可以使用从右向左的滑动手势来解除它。但是,从左向右滑动不再触发。

对于 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;

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

android:layout_gravity="right"

或者

android:layout_gravity="left"

对于抽屉内容和使用 .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)都将罚款。

但如果当 android:layout_gravity="left|center_vertical"或类似的东西 LOCK_MODE_LOCKED_CLOSED将不工作。

这对我很有效:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

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

LOCK_MODE_LOCKED_CLOSED现在完全阻止导航菜单显示,甚至通过汉堡菜单(这可能是不必要的)。下面这些对我很有用: https://stackoverflow.com/a/52160351/377320