首页 文章

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

提问于
浏览
1

我正在加载一个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

    您可以像这样简单地使用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

    要在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);
              }
           }
        });
    
  • 6

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

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

相关问题