【问题标题】:issue with progress bar with web view in androidandroid中带有Web视图的进度条问题
【发布时间】:2014-04-02 12:42:29
【问题描述】:

我开发了一个应用程序,它有一个 web 视图和一个进度条,所以我想添加一些功能,比如在加载网页的进度条中显示进度,所以它是如何实现的,我把代码放在这里。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        web = (WebView) findViewById(R.id.web);
        progressBar = (ProgressBar) findViewById(R.id.progrss);

        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("http://www.technotalkative.com");
    }

    public class myWebClient extends WebViewClient {



        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }
        @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // TODO Auto-generated method stub

                    view.loadUrl(url);
                    return true;

                }
        @Override
                public void onPageFinished(WebView view, String url) {
                    // TODO Auto-generated method stub
                    super.onPageFinished(view, url);

                    progressBar.setVisibility(View.GONE);
                }
    }


}


layout file..

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

     <ProgressBar 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_gravity="center"
        android:id="@+id/progrss"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressDrawable="@drawable/blue_progressbar"

        />      

    <WebView
        android:id="@+id/web"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_weight="1">
    </WebView>



 </LinearLayout>

【问题讨论】:

  • 那么问题是什么?有什么问题?
  • 问题是它没有显示进度只显示进度条
  • 需要横向PB还是圆形???
  • 但我想在页面顶部使用像线条这样的水平样式......

标签: android android-webview android-progressbar


【解决方案1】:

准备你的progress bar 喜欢

 progressBar.setProgress(0);
 probressbar.setMax(100);

你应该通过使用设置intermediate progress

progressBar.setProgress(int);

并像这样实现您的WebViewClient

web.setWebViewClient(new myWebClient());
//add this below line
web.setWebChromeClient(new WebChromeClient() {
 public void onProgressChanged(WebView view, int progress) {
    progressBar.setProgress(progress);

 if (progresss == 100) {
 progressBar.setVisibility(View.GONE);

 } else{
 progressBar.setVisibility(View.VISIBLE);

 }
 }
});

【讨论】:

    【解决方案2】:

    在 xml 文件中为 ProgressBar 设置进度。

     <ProgressBar 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_gravity="center"
        android:id="@+id/progrss"
        android:progress="100"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressDrawable="@drawable/blue_progressbar"
    
        />
    

    并在 myWebClient 方法中实现它

    web.setWebViewClient(new myWebClient());
    web.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress) {
    progressBar.setProgress(progress);
    }
    });      
    

    【讨论】:

      【解决方案3】:

      使用以下类。加载时会显示进度条 网页。

       public class WebSearchActivity extends Activity{
      
              private WebView webView;
      
              ProgressDialog pd;
      
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.websearch);
      
      
                  webView = (WebView) findViewById(R.id.webView1);
                  webView.getSettings().setJavaScriptEnabled(true);
                  webView.setInitialScale(60);
                  webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
                  webView.setScrollbarFadingEnabled(true);
                  webView.getSettings().setBuiltInZoomControls(true);
                  webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
                  webView.getSettings().setLoadWithOverviewMode(true);
                  webView.getSettings().setUseWideViewPort(true);
      
                  webView.loadUrl("https://www.google.co.in");
                  webView.setWebViewClient(new loadWebPage());
      
                  pd = new ProgressDialog(this);
                  pd.setMessage("Loading WebPage");
                  pd.show();
                  pd.setCanceledOnTouchOutside(false);
      
      
              }
      
              /*
               * This Class is used to get the WebView loading info
               */
              private class loadWebPage extends WebViewClient {
      
                  @Override
                  public boolean shouldOverrideUrlLoading(final WebView view,
                          final String url) {
                      // load the given url
                      view.loadUrl(url);
                      return true;
                  }
      
                  @Override
                  public void onPageFinished(WebView view, String url) {
      
                      if (pd.isShowing()) {
                          // dismiss the progress dialog
                          pd.dismiss();
                      }
      
                  }
      
                  @Override
                  public void onReceivedError(WebView view, int errorCode,
                          String description, String failingUrl) {
      
      
      
                  }
      
              }
      
      
      
          }
      

      【讨论】:

        猜你喜欢
        • 2022-01-21
        • 1970-01-01
        • 2020-02-16
        • 1970-01-01
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        相关资源
        最近更新 更多