我正在构建一个应用,我希望通过导航抽屉显示有关屏幕上显示内容的其他数据。 默认情况下,单击抽屉后它是隐藏的 - 我想覆盖此行为。 我想要的是保持抽屉打开,只要我点击它以外,并将点击事件重定向到基础视图。
这可能吗?如果没有抽屉布局,我该如何实现此功能?
答案 0 :(得分:1)
我通过扩展DrawerLayout并覆盖onInterceptTouchEvent解决了这个问题:
if case .No = self { ... }
在上面的示例中,您可以在打开右侧抽屉时与内容进行交互。不要在主布局xml文件中预先将DrawerLayout更改为CustomDrawerLayout。
此外,您可能需要隐藏阴影覆盖图,该阴影覆盖图显示在布局的其余部分上方,用于此用途:
public class CustomDrawerLayout extends DrawerLayout {
// .... Constructors here...
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final boolean result = super.onInterceptTouchEvent(ev);
if (isDrawerOpen(Gravity.RIGHT)) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP: {
return false;
}
}
}
return result;
}
}