3

目标 - 一旦 webview 加载网页,我想滚动到(0,60)。至少我想防止网页完成加载时看到的闪烁。闪烁 - 当 web 视图加载一个 url(例如 wiki)时,用户可以滚动它来阅读文本。然而,当它完成加载时,webview 会自动滚动到顶部。这在标准浏览器上不会发生。我的目标是 API 8。(旧但人们仍在使用该版本)。

这是一些代码:

private class WebBrowserWebViewClient extends WebViewClient 
{   
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        Log.d(TAG, "Load URL");
        view.loadUrl(url);                                 
        return true;                
    }

    @Override
    public void onPageFinished(WebView view, String url) 
    {
        super.onPageFinished(view, url);

        Log.d(TAG, "Page Finished Loading");

        //Attempt scrollTo here does not work.
        view.scrollTo(0, 60);
    }            
}

我还创建了一个图片监听器。

mWebView.setPictureListener(new PictureListener()
{               
        @Override
        public void onNewPicture(WebView view, Picture picture) 
        {
            Log.d(TAG, "On New Picture called....Y is " + view.getScrollY());

                //Does not work because it is called multiple times         
                view.scrollTo(0, 60);
            }       
});

我也一直在进步

mWebView.setWebChromeClient(new WebChromeClient()
{
       @Override
       public void onProgressChanged(WebView view, int newProgress) 
       {
            super.onProgressChanged(view, newProgress);

            Log.d(TAG,"On PRogress Changed. New Prgoress = " + newProgress);
       }
});

所以我注意到日志调试是在 webview 完成加载 URL 之前调用 onPageFinished() 。onNewPicture() 会根据 URL 中图片的数量被多次调用,并在 onPageFinsiehd() 被调用后调用。onProgressChanged() newProgress 总是达到 100 然后停止。在 onProgressChanged() 达到 100 并且 onNewPicture 触发后,webview 滚动回顶部。

问题 - 如何防止 webview 滚动回顶部?

注意 - 我看过其他关于类似问题的帖子,但没有一个解决了这个问题。

4

0 回答 0