不要隐藏导航抽屉

3
我正在开发一款应用程序,希望通过导航抽屉显示有关屏幕上显示内容的一些额外数据。默认情况下,在单击抽屉之外时,它会被隐藏 - 我想覆盖此行为。我想要的是,只要我在单击抽屉之外,就保持抽屉打开,并将单击事件重定向到底层视图。
这个可行吗?如果无法使用“DrawerLayout”,如何实现此功能?

您可以使用 mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 防止抽屉关闭。 - Ketan Ahir
1
你解决了你的问题吗? - joao2fast4u
@joao2fast4u,目前还没有,我现在只创建了一个固定的左片段,稍后再看这个问题。 - vanomart
1个回答

1

我通过扩展DrawerLayout并覆盖onInterceptTouchEvent来解决了这个问题:

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;
    }
}

在上面的例子中,当右侧抽屉打开时,您将能够与下方内容进行交互。不要忘记在主布局xml文件中将DrawerLayout更改为CustomDrawerLayout。
此外,您可能需要隐藏显示在其余布局上方的阴影覆盖层,请使用:
mDrawerLayout.setScrimColor(Color.TRANSPARENT);

我会验证这个并让你知道,但它看起来很有前途。 - vanomart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接