webview向上滚动与下拉刷新冲突(X5WebView)

最近项目中需要在webview添加个下拉刷新,继而出现了滑动冲突问题。使用swiperefreshLayout,webview(或者X5WebView)嵌套使用,webview下划滚动没有问题,但是上划滚动时,执行了swiperefreshLayout 的刷新动作,这并不是我想要的效果。

需要效果:上划滚动时webview需能直接滚动。只有当webview上划滚动到顶部,才能触发swiperefreshLayout 刷新。

swiperefreshLayout 作为谷歌推出的下拉刷新库,并没有内部处理这些手势分配。官网给了个api。 说如果子布局想滚动 重写 canChildScrollUp () 。实际上并不是很好操作。搜了很多blog 都没有用,下面给出有效的解决方式。适用与腾讯的X5WebView。

解决方式 : 基于需要效果,关键是识别到 webview 什么时候滚到顶部再把手势给 swiperefreshLayout 就可以了。只是 webView.getScrollY() 总是 =0 。
解决方式:

import com.tencent.smtt.sdk.WebView;

import android.content.Context;
import android.util.AttributeSet;

/**
*  重定义webview 这里继承的是X5WebView
*/
public class ScrollWebView extends WebView
{
    public interface IScrollListener
    {
        void onScrollChanged(int scrollY);
    }

    private IScrollListener mScrollListener;

    public void setOnScrollListener(IScrollListener listener)
    {
        mScrollListener = listener;
    }

    public ScrollWebView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt)
    {
        super.onScrollChanged(l, t, oldl, oldt);
        //只要是通过webview的滚动距离 t
        if (mScrollListener != null)
        {
            mScrollListener.onScrollChanged(t);
        }
    }
}

在activity中这样调用:

mWebView.setOnScrollListener(new IScrollListener()
        {
            @Override
            public void onScrollChanged(int scrollY)
            {
                //这是我项目的刷新(到时候去掉,用下面的判断)
                if (scrollY == 0)//webView在顶部
                {
                    mPb.setRefreshEnabled(true);
                } else
                {
                    mPb.setRefreshEnabled(false);
                }
                //swiperefreshLayout刷新
//                if (t == 0) {//webView在顶部
//                    swipeLayout.setEnabled(true);
//                } else {//webView不是顶部
//                    swipeLayout.setEnabled(false);
//                }
            }
        });

网上查找资料,有老铁提供的x5webview的判断
webview向上滚动与下拉刷新冲突(X5WebView)_第1张图片
不过在官方中我是没有找到。有找到的老铁分享下哈。。。

你可能感兴趣的:(android)