怎么监听webview的上下滑动事件

 我来答
Monubia
2015-12-22 · TA获得超过8962个赞
知道大有可为答主
回答量:4373
采纳率:75%
帮助的人:1341万
展开全部

WebView并没有对外提供一个类似于setOnScrollChangedListener之类的监听者,只有一个如下的protected方法:

protected void onScrollChanged(final int l, final int t, final int oldl,
                               final int oldt) {

可以自定义WebView实现onScrollChanged并对外提供一个接口,如下:

public class ObservableWebView extends WebView {
    private OnScrollChangedCallback mOnScrollChangedCallback;
 
    public ObservableWebView(final Context context) {
        super(context);
    }
 
    public ObservableWebView(final Context context, final AttributeSet attrs) {
        super(context, attrs);
    }
 
    public ObservableWebView(final Context context, final AttributeSet attrs,
                             final int defStyle) {
        super(context, attrs, defStyle);
    }
 
    @Override
    protected void onScrollChanged(final int l, final int t, final int oldl,
                                   final int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
 
        if (mOnScrollChangedCallback != null) {
            mOnScrollChangedCallback.onScroll(l - oldl, t - oldt);
        }
    }
 
    public OnScrollChangedCallback getOnScrollChangedCallback() {
        return mOnScrollChangedCallback;
    }
 
    public void setOnScrollChangedCallback(
            final OnScrollChangedCallback onScrollChangedCallback) {
        mOnScrollChangedCallback = onScrollChangedCallback;
    }
 
    public static interface OnScrollChangedCallback {
        public void onScroll(int dx, int dy);
    }
}

使用方法:

  1. 找到WebView控件

    wv = (ObservableWebView) findViewById(R.id.scorllableWebview);

  2. 设置监听

    wv.setOnScrollChangedCallback(new OnScrollChangedCallback(){

        public void onScroll(int dx, int dy){

          //这里我们根据dx和dy参数做自己想做的事情

        }

     });

  3. 根据dx和dy的值进行判断。

水煮冰欺凌
2015-07-03 · 超过27用户采纳过TA的回答
知道答主
回答量:70
采纳率:100%
帮助的人:33.9万
展开全部
window.onscroll = function(){};    //滚动条滚动
document.addEventListener("touchmove", function(){
    //手机滑动事件

}, false);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式