即使在网页加载完成后,webview中的进度条也会继续加载

时间:2015-09-19 09:28:47

标签: java android webview

这是我的代码

import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

@SuppressLint("SetJavaScriptEnabled")

public class MainActivity extends ActionBarActivity {

private WebView view;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    progressBar = (ProgressBar) this.findViewById(R.id.progressBar);
    String url = "http://www.carsaleindiaofficial.com/?m=1";
    view = (WebView) this.findViewById(R.id.webView);
    view.setWebViewClient(new WebViewClient());
    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setDomStorageEnabled(true);
    view.loadUrl(url);

}

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        view.findViewById(R.id.progressBar).setVisibility(View.GONE);


        //if (progressBar.getVisibility() == View.VISIBLE)
        //progressBar.setVisibility(View.INVISIBLE);

        //progressBar.setVisibility(View.INVISIBLE);
        //progressBar.setVisibility(View.GONE);


    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().endsWith("carsaleindiaofficial.com/?m=1")) {
            return false;
        }

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;
    }

}


@Override
public void onBackPressed() {
    if (view.canGoBack()) {
        view.goBack();
    } else {
        super.onBackPressed();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_settings)
        view.loadUrl(view.getUrl());

    return super.onOptionsItemSelected(item);
    }
}

进度条和webview工作正常,但当页面完成加载时,进度条仍然存在?当我加载页面时,进度条的可见性不会消失/更改为GONE?错误在哪里? 我已经尝试了progressBar.setVisibility(View.INVISIBLE)和progressBar.setVisibility(View.GONE);但似乎没有用。

3 个答案:

答案 0 :(得分:1)

$foo = "-105.5457";
echo number_format(str_replace('-','',$foo),2,'.','');

这对我有用。您可以将其设置为 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { progressBar.setVisibility(View.GONE); FGallery.this.progressBar.setProgress(100); super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { progressBar.setVisibility(View.VISIBLE); FGallery.this.progressBar.setProgress(0); super.onPageStarted(view, url, favicon); } }

答案 1 :(得分:1)

而不是使用自定义webclient。您使用默认的webclient。你的问题就是替换它。

view.setWebViewClient(new WebViewClient()); 

添加此

view.setWebViewClient(new MyAppWebViewClient());

以及

 progressBar.setVisibility(View.INVISIBLE);

不是

view.findViewById(R.id.progressBar1).setVisibility(View.GONE);

完整代码

import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

@SuppressLint("SetJavaScriptEnabled")

public class MainActivity extends ActionBarActivity {

private WebView view;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maine);

    progressBar = (ProgressBar) this.findViewById(R.id.progressBar1);
    String url = "http://www.carsaleindiaofficial.com/?m=1";
    view = (WebView) this.findViewById(R.id.webView1);
    view.setWebViewClient(new MyAppWebViewClient());
    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setDomStorageEnabled(true);
    //view.loadUrl(url);
    view.loadUrl("http://m.facebook.com/");
   // view.loadUrl("file:///android_asset/web.html");

}

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        //view.findViewById(R.id.progressBar1).setVisibility(View.GONE);
        Log.i("pageFinished", "yesss");
        progressBar.setVisibility(View.INVISIBLE);
        //progressBar.setVisibility(View.GONE);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }


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

}


@Override
public void onBackPressed() {
    if (view.canGoBack()) {
        view.goBack();
    } else {
        super.onBackPressed();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.maine, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_settings)
        view.loadUrl(view.getUrl());

    return super.onOptionsItemSelected(item);
    }
}

答案 2 :(得分:0)

在使用webview网址后,您必须撰写progressbar.visibility="View.GONE"