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

来源:互联网 发布:三星手机指南针软件 编辑:程序博客网 时间:2024/06/10 01:48

最近项目中需要在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的判断
这里写图片描述
不过在官方中我是没有找到。有找到的老铁分享下哈。。。

阅读全文
0 0