使用DrawerLayout时如何避免手势重叠?

时间:2016-08-08 11:51:19

标签: android

我有一个布局,可以从屏幕右侧拖动。

@Bind(R.id.left_drawer_layout)
DrawerLayout drawerLayout;

 @OnClick(R.id.left_drawer)
    void onLeftDrawer() {
        if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
            closeLeftDrawer();
        } else {
            drawerLayout.openDrawer(GravityCompat.START);
        }
    }

在这个抽屉里面,我有一个WebView,它显示了一些与webView边界相比尺寸巨大的内容。这就是为什么我需要向任何方向滚动它:

up
down
left
right

最后两个手势被DrawerLayout覆盖,而它的某些级别比webView高。

如何覆盖WebView的行为,以便它可以向任何方向拖动(可滚动)而不影响我的DrawerLayout?

1 个答案:

答案 0 :(得分:0)

解决方案非常简单:在我们触摸WebView时锁定DrawerLayout:

 webView.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                ((MainActivity) getActivity()).getDrawerLayout()
                        .setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                ((MainActivity) getActivity()).getDrawerLayout()
                        .setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            }

            return false;
        }
    });