Webview WebViewClient的方法
public void onPageFinished(WebView view, String url) {
..processing code after page is loaded
}可用于在页面完全加载后实现任何所需的功能,但看起来此处理程序是在所有资源完成加载后立即触发的,而不是等到呈现完成。当大多数post加载活动,例如滚动到某些html元素失败时,我就怀疑到了这一点。作为一种变通方法,我将这些函数调用包装在一个延时为500ms或更长的计时器中
new Timer().schedule(new TimerTask() {
something here...
}, 500);但它并不是在所有情况下都看起来可靠,例如,如果页面非常大,500ms将是不够的,等等。
这可以用不同的方式来做吗?
发布于 2015-03-04 17:38:31
以下是解决此问题的几种方法,主要在this post中解决。然而,据我所知,它们都没有真正解决这个问题。
1)子类化WebView并重写invalidate() (docs方法。不过,有时可能不会调用此方法。
@Override
public void invalidate() {
super.invalidate();
if (getContentHeight() > 0) {
// Add code here
}
}2)使用setPictureListener (docs.请注意,这已被弃用。
webView.setPictureListener(new PictureListener() {
@Override
public void onNewPicture(WebView webView, Picture picture) {
// Add code here
}
});3)使用WebChromeClient并覆盖onProgressChanged (docs.在加载URL的过程中,这可能会被调用多次。
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress==100) {
// Add code here
}
}
});https://stackoverflow.com/questions/28849591
复制相似问题