2011-02-14 131 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