如何使活动的主要内容区,而抽屉是开放的。目前,如果点击主内容区,抽屉将关闭,然后触摸事件将被丢弃,我想抓住触摸事件并将其传递到主内容区。

最佳答案

您需要创建自定义抽屉布局和@overideonInterceptTouchEvent。然后,您可以创建一些注册抽屉视图的方法(如setDrawerViewWithoutIntercepting),在打开时可以使用(单击)主内容。您应该在活动/片段中调用此方法,其中使用了此抽屉布局。
OnIntercepttouchEvent将返回False,以防打开已注册的抽屉视图,并且触摸不到抽屉视图区域。这意味着所有功能保持不变(如使用滑动关闭抽屉视图等)。
这只是一个需要改进的例子,所以我希望它能对你有所帮助。

private View currentDrawerView;

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    boolean result = super.onInterceptTouchEvent(event);

    if (currentDrawerView != null && isDrawerOpen(currentDrawerView)) {
        DrawerLayout.LayoutParams layoutParams = (DrawerLayout.LayoutParams) currentDrawerView.getLayoutParams();

        if (layoutParams.gravity == Gravity.RIGHT) {
            if (event.getX() < currentDrawerView.getX()) {
                result = false;
            }
        }
        else if (layoutParams.gravity == Gravity.LEFT) {
            if (event.getX() > currentDrawerView.getX() + currentDrawerView.getWidth()) {
                result = false;
            }
        }
        // ......

    };
    return result;
}

public void setDrawerViewWithoutIntercepting(View view) {
    this.currentDrawerView = view;
}

10-08 17:09