因RecyclerView 和webview 或者X5的webview 都具有滑动的功能 所以在做嵌套的时候 会出现滑动不流畅 等问题 解决思路 就是判断滑动的时候 是否自身消耗 或者父布局的RecycleView消耗

开发中还遇到个问题 就是 更换成x5的时候 getScrolly() 返回的一直是0  改成getWebScrollY() 就正常了

 

public float oldY;
public float oldX;
public float newY;
public float newX;

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    float webViewContentHeight = getContentHeight() * getScale();
    //WebView的现高度
    float webViewCurrentHeight = (getHeight() + getWebScrollY());
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            newX = ev.getX();
            newY = ev.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            oldX = newX;
            oldY = newY;
            newX = ev.getX();
            newY = ev.getY();
            if (oldY < newY) {//向上滑动
                if (getWebScrollY() == 0) {//getParent()寻找父布局的RecView
//这个getParent()要根据自己的代码来定 下面推荐一个找父布局的方法

                    getParent().getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
                } else {
                    getParent().getParent().getParent().getParent().requestDisallowInterceptTouchEvent(true);
                    return super.onInterceptTouchEvent(ev);
                }
            } else {
                if ((webViewContentHeight - webViewCurrentHeight) <= 2) {
                    getParent().getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
                } else {
                    getParent().getParent().getParent().getParent().requestDisallowInterceptTouchEvent(true);
                    return super.onInterceptTouchEvent(ev);
                }
            }

            break;
    }
    return super.onInterceptTouchEvent(ev);
}

可以在子view中 随缘打一个断点   如onInterceptTouchEvent中

断点进入后 可点击控制台下方的debug中

  输入getParent() 点击确定寻找上层view 知道找到你需要消费的布局为止 如:getParent().getParent().getParent().getParent().getParent().getParent()

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐