2011-02-14 145 views
8

在我的android應用程序中,我打開了一個webview.I想要隱藏正在加載的url,所以默認的窗口進度條對我來說不起作用。在webview上顯示進度對話框

有沒有什麼比我可以在webview上添加進度對話的方式。

我正在使用下面的代碼。

mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 

    final Activity activity = this; 

    mWebView.setWebChromeClient(new WebChromeClient(){ 

    public void onProgressChanged(WebView view, int progress) { 
    activity.setTitle("Loading..."); 
    activity.setProgress(progress * 100); 
    if(progress == 100) 
    activity.setTitle("My title"); 
    } 
    }); 

    mWebView.loadUrl(Url); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

}

private class HelloWebViewClient extends WebViewClient { 
    ProgressDialog MyDialog=new ProgressDialog(context); 

    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
     MyDialog.show(); 
     view.loadUrl(url); 
     return true; 
     } 

請分享您的寶貴建議。

感謝提前:)

回答

29

如果您通過隱藏應用程序標題「安卓主題=」 @安卓風格/ Theme.NoTitleBar「」從清單,那麼你將不會看到它顯示在進度條標題這段代碼:

this.getWindow().requestFeature(Window.FEATURE_PROGRESS);    
    setContentView(R.layout.main); 

// Makes Progress bar Visible 
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 

所以,你可以顯示進度條用的onCreate()內這樣一個對話框:

final Activity activity = this; 

final ProgressDialog progressDialog = new ProgressDialog(activity); 
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
progressDialog.setCancelable(false); 

browser.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
     progressDialog.show(); 
     progressDialog.setProgress(0); 
     activity.setProgress(progress * 1000); 

     progressDialog.incrementProgressBy(progress); 

     if(progress == 100 && progressDialog.isShowing()) 
      progressDialog.dismiss(); 
    } 
}); 
+0

謝謝,這確實是人們想要什麼! – Abramodj 2011-04-05 10:12:08