2012-01-20 114 views
1

我正在將WebView加載到LinearLayout,並且希望在此佈局中顯示ProgressBar,直到WebView完全加載。我通過下面的鏈接看到wnet要真的很棒,但我不想使用ProgressDialog,而是我想在佈局中使用progressbar。如何在加載WebView之前顯示佈局的進度條

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我想,直到頁面獲取顯示顯示進度。

回答

2

您可以簡單地使用web視圖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); 
+0

+1。雖然PictureListener已被棄用,但我敢打賭,沒有其他方法可以正確執行此操作(至少現在還沒有)。 – josephus

5

要定義內部的WebView的進度條:

定義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.在你的交流tivity:

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); 
      } 
     } 
    }); 
+0

@ VineetShukla-Simply superb .. –

0

我相信這是一個更好的方式檢測到頁面加載完成。

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