如何在加载WebView之前显示布局的进度条

时间:2012-01-20 10:50:26

标签: android progress-bar android-webview

我正在将一个WebView加载到LinearLayout,并希望在此布局中显示一个ProgressBar,直到WebView完全加载。我通过以下链接,它们看起来真的很棒,但我不想使用 ProgressDialog ,而不是我想在布局中使用进度条。

http://xjaphx.wordpress.com/2011/07/31/load-webview-with-progressdialog/

how to show progress bar on webview?

我该怎么做?

比如说,

if(pos==0)
{
 mLayout.setVisibility(View.VISIBLE);
 mWeb.loadUrl("http://android.stackexchange.com/");
}

mLayout内我想显示一个进度条,直到页面显示出来。

3 个答案:

答案 0 :(得分:7)

在webview中定义进度条:

1。在您的布局中定义ProgressBarWebview,如下所示:

<ProgressBar android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="8px"
        android:max="100"
        android:visibility="gone" />

<ScrollView
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fadingEdge="none" >

<WebView
    android:id="@+id/webkit"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

</ScrollView>

2。在您的活动中:

    progressBar = (ProgressBar)findViewById(R.id.progressbar);

    progressBar.setProgress(0);

    progressBar.setVisibility(View.VISIBLE);

    WebView mWebView = (WebView)findViewById(R.id.webkit);

    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

    mWebView.setWebChromeClient(new WebChromeClient(){

    public void onProgressChanged(WebView view, int progress) {

         progressBar.setProgress(progress);
         if(progress == 100) {
             progressBar.setVisibility(View.GONE);
          }
       }
    });

答案 1 :(得分:3)

您可以像这样简单地使用webView setPictureListener():

// here you can start a loading wheel

   webView.setPictureListener(new WebView.PictureListener() {
      public void onNewPicture(WebView webView, Picture picture) {
           // close your loading wheel here
            }
        });

   //load your url
   webView.loadUrl(yourUrl);

答案 2 :(得分:0)

我确信这是检测页面加载完成的更好方法。

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            loadingIndicator.setVisibility(View.GONE);
        }
    });