【问题标题】:hide progresbar after loading the page加载页面后隐藏进度条
【发布时间】:2015-12-29 09:30:25
【问题描述】:

大家好,我的progressbar 有问题。 当页面加载到WebView 时它不会消失任何人都可以帮忙,因为我有代码,但它不起作用 我有 XML 名称进度条(android:id="@+id/progressBar")我在互联网上搜索了很多解决方案,但没有任何帮助

public class GenerateQRCodeActivity extends Activity implements OnClickListener{
public static final Uri MailTo = null;
private long lastMoveEventTime = -1;
private int eventTimeInterval = 40;
private ProgressBar progressBar;
private WebView mWebView;
@SuppressLint("SetJavaScriptEnabled") 

 private String LOG_TAG = "GenerateQRCode";
protected Activity MyActivity;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  progressBar = (ProgressBar) findViewById(R.id.progressBar);
  progressBar.setMax(100);
  ImageButton button2 = (ImageButton) findViewById(R.id.button2);
  ImageButton button3 = (ImageButton) findViewById(R.id.button3);
  button2.setOnClickListener(this);
  button3.setOnClickListener(this);
  mWebView = (WebView) findViewById(R.id.webview);
  mWebView.getSettings().setJavaScriptEnabled(true);
  mWebView.setWebChromeClient(new WebChromeClient());
  WebSettings webSettings = mWebView.getSettings();
  webSettings.setJavaScriptEnabled(true);
  mWebView.requestFocusFromTouch();
  mWebView.getSettings().setRenderPriority(RenderPriority.HIGH); 
  mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
  mWebView.setBackgroundColor(Color.parseColor("#4dc3f1"));
  if (Build.VERSION.SDK_INT >= 11) {
      mWebView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
  }
  mWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
  mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
  webSettings.setDomStorageEnabled(true);
  mWebView.setWebViewClient(new WebViewClientDemo());
  mWebView.setWebChromeClient(new WebChromeClientDemo());
  mWebView.loadUrl("http://www.google.com/");
  mWebView.getSettings().setJavaScriptEnabled(true);
  mWebView.setWebViewClient(new HelloWebViewClient());





  getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, 
          WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);





 }
 private class WebViewClientDemo extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
         @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            progressBar.setVisibility(View.GONE);
            progressBar.setProgress(100);
        }

         @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            progressBar.setVisibility(View.GONE);
            progressBar.setProgress(0);
        }       
    }
    private class WebChromeClientDemo extends WebChromeClient {
        public void onProgressChanged(WebView view, int progress) {
            progressBar.setProgress(progress);
        }
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        else {
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       return true;
    }

【问题讨论】:

标签: java android eclipse webview


【解决方案1】:

你可以使用这几行代码

      WebSettings settings = webView.getSettings();

        settings.setJavaScriptEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);

        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLoadWithOverviewMode(true);

        progressDialog = new ProgressDialog(ContestActivity.this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();

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

            @Override
            public void onPageFinished(WebView view, String url) {
                if (progressDialog.isShowing() ) {
                    progressDialog.dismiss();
                }
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(ContestActivity.this, "Error:" + description, Toast.LENGTH_SHORT).show();

            }
        });
        webView.loadUrl("YOUR URL HERE");

【讨论】:

  • @d00nn12 ...如果它对您有用,请接受其他人的这些答案,谁也可能陷入同样的​​问题
  • 你现在遇到了什么问题??
  • 和以前一样。进度条不会消失
  • @d00nn12 ...意味着您的问题是progressBar不断加载...检查我已经编辑了我的解决方案...让我知道以防万一.....您也可以尝试这些链接technotalkative.com/android-load-webview-with-progressbar
【解决方案2】:

您必须在onPageStarted 中将progessbar 的可见性设置为Visible,因此请替换此代码:

 @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.INVISIBLE);
        progressBar.setProgress(100);
    }

     @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);
    }   

和你的:

  @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(100);
    }

     @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.GONE);
        progressBar.setProgress(0);
    }   

【讨论】:

  • 对不起,我的英语不太好 是的,我一开始就有过,所以只是没有一个答案加载后进度条消失
【解决方案3】:

删除这一行progressBar.setProgress(100);

    @Override
    public void onPageFinished(WebView view, String url)
    {
     super.onPageFinished(view, url);
     progressBar.setVisibility(View.GONE);
     progressBar.setProgress(100); // <--This line is to delete
    }

你说progressBar.setVisibality(View.GONE); 隐藏进度条,然后progressBar.setProgress(100); 说:再次显示:)

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多