2012-02-27 11 views

risposta

13

Prova questa

 ...... 
     webView.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       activity.setTitle("Loading..."); 
       activity.setProgress(progress * 100); 

       if(progress == 100) 
       activity.setTitle(R.string.app_name); 
      } 
     }); 
     ... 
18

Prova questo segmento di codice. Mostra un progressDialog o immagine o il layout quello che vuoi in onPageStarted() & nascondere in onPageFinished()

 webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) 
      { 
       // TODO show you progress image 
       super.onPageStarted(view, url, favicon); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) 
      { 
       // TODO hide your progress image 
       super.onPageFinished(view, url); 
      } 
     }); 
+2

Questa è una buona soluzione abbastanza quando non si vuole utilizzare 'WebChromeClient' (in risposta accettata), ma un 'WebViewClient'. –

5

provare questo codice per mostrare un ProgressDialog

webView.setWebChromeClient(new WebChromeClient() { 
     private ProgressDialog mProgress; 

     @Override 
     public void onProgressChanged(WebView view, int progress) { 
      if (mProgress == null) { 
       mProgress = new ProgressDialog(getActivity()); 
       mProgress.show(); 
      } 
      mProgress.setMessage("Loading " + String.valueOf(progress) + "%"); 
      if (progress == 100) { 
       mProgress.dismiss(); 
       mProgress = null; 
      } 
     } 
    }); 
2

Questo è ciò che ha funzionato per me in Kotlin:

private fun setupWebView() { 

    val webViewClient: WebViewClient = object: WebViewClient() { 

     override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { 
      view?.loadUrl(request?.url.toString()) 
      return super.shouldOverrideUrlLoading(view, request) 
     } 

     override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { 
      showProgressDialog() 
      super.onPageStarted(view, url, favicon) 
     } 

     override fun onPageFinished(view: WebView?, url: String?) { 
      hideProgressDialog() 
      super.onPageFinished(view, url) 
     } 
    } 
    webView.webViewClient = webViewClient 

    webView.settings.javaScriptEnabled = true 
    webView.settings.defaultTextEncodingName = "utf-8" 
} 
+0

Up for Kotlin :) –

1

Codice semplice per Java -

webView.setWebViewClient(new WebViewClient{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     pdialog.show(); 
    } 
    @Override 
    public void onPageFinished(WebView view, String url) 
    { 
     pdialog.hide(); 
    }); 
Problemi correlati