如何禁用DrawerLayout的手势识别?(从左到右滑动),只接受关闭手势(从右到左)并仅使用Home按钮打开侧边栏?
如何禁用DrawerLayout的手势识别?(从左到右滑动),只接受关闭手势(从右到左)并仅使用Home按钮打开侧边栏?
这对我有用:
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;
看起来我发现了一个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
将无法正常工作。
如果要禁用 DrawerLayout 的手势识别,请使用以下代码:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
LOCK_MODE_LOCKED_CLOSED
完全阻止导航菜单的显示,即使通过汉堡菜单也无法显示(可能不希望出现这种情况)。以下方法适用于我:https://dev59.com/ImQn5IYBdhLWcg3wJ0e5#52160351。这对我有用:
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
您可以通过点击汉堡图标或按钮来展开抽屉,但是左右滑动不再触发。