目标 - 一旦 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 滚动回顶部?
注意 - 我看过其他关于类似问题的帖子,但没有一个解决了这个问题。