在html页面水平滚动和recyclerview垂直滚动中发生碰撞

时间:2016-07-29 03:30:45

标签: android html android-recyclerview android-webview

我的WebView中有一个RecyclerViewWebView加载了一个html页面。页面的一部分可以水平滚动,但是当我横向滚动时,RecyclerView可以轻松地触摸触摸事件并开始垂直滚动。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

最后,我已经找到了关于我的问题的解决方案。 WebView的部分位于视图的顶部。所以我用它来拦截触摸事件:

float touchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop()

webView.setOnTouchListener((View v, MotionEvent event) -> {
    if (!scrollFlag && event.getY() < getHeight() / 2) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                downX = event.getX();
                downY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                if (Math.abs(event.getY() - downY) < touchSlop && Math.abs(event.getX() - downX) > touchSlop) {
                    getParent().requestDisallowInterceptTouchEvent(true);
                    scrollFlag = true;
                }
                break;
        }
    }
    if (event.getAction() == MotionEvent.ACTION_UP)
        scrollFlag = false;

    return false;
});