Skip to content

不完美解决未完全滑动scrollview的底部就切换下一页 #5

@ysmintor

Description

@ysmintor

调试查了几小时发现出问题在这个地方

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                downX = ev.getX();
                downY = ev.getY();
                //如果滑动到了最底部,就允许继续向上滑动加载下一页,否者不允许
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
            case MotionEvent.ACTION_MOVE:
                float dx = ev.getX() - downX;
                float dy = ev.getY() - downY;
                boolean allowParentTouchEvent;
                if (Math.abs(dy) > Math.abs(dx)) {
                    if (dy > 0) {
                        //位于顶部时下拉,让父View消费事件
                        allowParentTouchEvent = isTop();
                    } else {
                        //位于底部时上拉,让父View消费事件
                        allowParentTouchEvent = isBottom();
                    }
                } else {
                    //水平方向滑动
                    allowParentTouchEvent = false; // 这里原来为true,我看代码也知道基本就不应该执行,但还是很空间触发,暂时就这样解决
                }
                getParent().requestDisallowInterceptTouchEvent(!allowParentTouchEvent);
        }
        return super.dispatchTouchEvent(ev);
    }

我试了 if (Math.abs(dy) > Math.abs(dx) * 0.01) 这样一个因子,也可以。有更好的解决办法吗?
我试这个因为我在scrollview里还嵌套了一个expandableListview,很是麻烦。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions