【问题标题】:How to show a progress bar for a layout until the WebView is loaded如何在加载 WebView 之前显示布局的进度条
【发布时间】:2012-01-20 10:50:26
【问题描述】:

我正在将 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 内部我想显示一个进度条,直到页面显示出来。

【问题讨论】:

    标签: android progress-bar android-webview


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • +1。虽然 PictureListener 已被弃用,但我敢打赌没有其他方法可以正确地做到这一点(至少现在还没有)。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 2018-12-02
        • 2020-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多