try this code
webview.setWebViewClient(new myWebClient());
webview.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progressInt)
{
if (progressInt < 80 && progress.getVisibility() == ProgressBar.GONE)
{
progress.setVisibility(ProgressBar.VISIBLE);
}
if (progressInt >= 80)
{
progress.setVisibility(ProgressBar.GONE);
}
}
});
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
progress.setVisibility(View.VISIBLE);
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
progress.setVisibility(View.GONE);
}
}
2017-02-06 08:04:27
+0
感谢您的回答。 Bu我必须知道为什么我无法在shouldOverrideUrlLoading方法返回true后处理pageFinish。我想在不使用WebChromeClient的情况下解决此问题。 –
+0
@穆罕默德:“我必须知道为什么我无法在shouldOverrideUrlLoading方法返回true之后处理pageFinish。”因为在shouldOverrideUrlLoading中返回true时,告诉当前webview不要加载url,这意味着也不会调用回调函数(onPageStarted,onPageFinished)。 https://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView,java.lang.String) –