【问题标题】:Android progressbar on webview appearing twicewebview上的Android进度条出现两次
【发布时间】:2012-03-26 05:44:30
【问题描述】:

我正在尝试使用progress bar 为Android 创建一个简单的应用程序。一切正常。但是,这里有两个问题

1) 当应用程序启动时,我可以看到两次加载进度。

2) 如何在初始页面加载完成后禁用进度条。我不想在每次点击时显示进度条..

这是我的代码

package com.mycom.jquery;
import android.app.Activity;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class HelloWebView extends Activity {

WebView webview;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
            Window.PROGRESS_VISIBILITY_ON);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);

    webview.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

    });
    final Activity activity = this;

    final ProgressDialog progressDialog = new ProgressDialog(activity);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMessage("Loading...Jquery.com");
    progressDialog.setCancelable(true);

    webview.loadUrl("http://www.jquery.com");

    // WebChromeClient give progress etc info
    webview.setWebChromeClient(new WebChromeClient() {

        public void onProgressChanged(WebView view, int progress) {
            progressDialog.show();
            progressDialog.setProgress(0);
            activity.setProgress(progress * 1000);

            progressDialog.incrementProgressBy(progress);

            if (progress == 100 && progressDialog.isShowing())
                progressDialog.dismiss();
        }
    });

}

}

【问题讨论】:

  • 我不知道你为什么要创建两次客户端?setWebChromeClient()setWebViewClient()
  • @Prahesh 我是新手.. 因此不知道.. 你能指导我正确的方向
  • 两者都可以使用 webChromeClient 是 setIcon ,显示警报等,而 WebViewClient 是 Simple 。这取决于你的需要你想要什么

标签: android webview progress-bar webviewclient webchromeclient


【解决方案1】:

尝试调用

progressDialog.show();

外面

onProgressChanged(WebView view, int progress)

【讨论】:

    【解决方案2】:

    当进度变为 100 时设置一个标志,然后如果该标志是 true,则立即在您的 onProgressChanged 实现中返回。

    【讨论】:

    • 这是一个更好的选择。这样可以在需要时启动进度条
    【解决方案3】:

    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

    尝试删除它。从你的代码。

    【讨论】:

    • 不走运.. 一样的.. 应用启动时进度条出现两次
    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多