ScrollView嵌套WebView导致网页图片不加载问题解决方法

最近做一个资讯界面,采用的组合式[ScrollView[WebView+ListView]]的形式,这种实现方式,可以灵活的满足,资讯内容为网页H5,评论列表为原生的形式。

但是一开始就一直有一个问题困扰着我们,就是当使用了这种组合之后,仿佛WebView就不知道如何去加载图片了,每次就留个空白在那边。

在网上找了N种方法,没一个说到点子上的,也可能是那些方法并不针对这个问题。自己通过分析之后,发现了自己的解决方案,可以完美解决这种情况。

说到底,为什么图片不去加载,是因为上层的ScrollView将所有的触摸事件都消化了,导致WebView看起来是可以滑动的,其实是假的滑动,真实的是上层的ScrollView在滑动。

找便WebView的源码,发现下面一行代码:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return mProvider.getViewDelegate().onTouchEvent(event);
    }

我猜让这个方法激活是解决这个问题的关键,后面的试验也证实了我的想法。

起初我走了个弯子,想通过WebView的对象,获取到mProvider对象,后来发现这个方法不可行,见源码:

    /**
     * Gets the WebViewProvider. Used by providers to obtain the underlying
     * implementation, e.g. when the appliction responds to
     * WebViewClient.onCreateWindow() request.
     *
     * @hide WebViewProvider is not public API.
     */
    @SystemApi
    public WebViewProvider getWebViewProvider() {
        return mProvider;
    }

这玩意是个系统api,不是公开的。

思路一转,有了下面的尝试:

    scoll_view.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.e(TAG, "pull_to_refresh_view====>onTouch");
                webView.onTouchEvent(event);
                return false;
            }
        });

对的,就是上面这几行代码,完美的让WebView的onTouchEvent重新激活,从而让它再次知道自己何时要加载图片标签啦。

问题解决,赶紧记录一下~~~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值