Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Webview中的进度条_Java_Android_Webview_Progress Bar_Loading - Fatal编程技术网

Java Webview中的进度条

Java Webview中的进度条,java,android,webview,progress-bar,loading,Java,Android,Webview,Progress Bar,Loading,我很难让这个进度条正常工作。有谁能帮我找到源头,我有什么遗漏吗 web = (WebView) findViewById(R.id.webview01); progressBar = (ProgressBar) findViewById(R.id.progressBar); web.setWebViewClient(new myWebClient()); //ADDING THIS RESOLVED THE PROGRESS BAR ACTUA

我很难让这个进度条正常工作。有谁能帮我找到源头,我有什么遗漏吗

 web = (WebView) findViewById(R.id.webview01);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        web.setWebViewClient(new myWebClient());

        //ADDING THIS RESOLVED THE PROGRESS BAR ACTUALLY LOADING.
        web.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress); } 
        });
        //ADDING THIS RESOLVED THE PROGRESS BAR ACTUALLY LOADING.

        WebSettings websettings = web.getSettings();
        websettings.setBuiltInZoomControls(true);
        websettings.setUseWideViewPort(true);
        websettings.setJavaScriptEnabled(true);
        websettings.setAllowFileAccess(true);
        websettings.setDomStorageEnabled(true);
        websettings.setLoadWithOverviewMode(true);
        websettings.setSavePassword(true);
        web.loadUrl("http://www.google.com");
然后在后面的代码中

    //Loading the Actual Webpage
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);
        progressBar.setVisibility(View.VISIBLE);

    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        progressBar.setVisibility(View.VISIBLE);
        return true;

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

    }




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

        progressBar.setVisibility(View.GONE);
    }

}
webview本身工作得很好,我只是想有一个水平加载条,类似于dolphin、chrome等浏览器

这是布局图

 <?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/bgapp"
 android:fadingEdge="horizontal"
 android:gravity="center"
 android:orientation="vertical" >

 <include
    android:id="@+id/inc_blue"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    layout="@layout/inc_enphase_bar_with_title_buttons" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:minHeight="8dip" />

<WebView
    android:id="@+id/webview01"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.15"
    android:fadingEdge="vertical" >

</WebView>


我没有收到任何错误或不安,因此没有logcat,它只是实际加载,它在加载网页时显示进度条,但没有动画或加载的实际移动。

您还应该使用

progressBar.setProgress(int);
以便显示进度。您所做的只是显示和隐藏视图

编辑: 添加下面的代码

   @Override
   public void onProgressChanged(WebView view, int progress) {
     progressBar.setProgress(progress);
   }
很抱歉,您需要一个webchromeclient。所以使用下面的方法。把它放在下面

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

检查文档,它有一个示例。

put progressBar.setVisibility(View.VISIBLE);int inPageStarted callbasck我将把
progressBar.setProgress(int)放在哪里
在我的WebClient中,你们知道在webview中使用chromeclient是不是更好?我对chromeclient不太确定,从来没有使用过。覆盖WebViewClient Classis的onProgresschanged我已经用我认为是您建议的内容更新了我的源代码,您介意看看吗。如果我犯了错误,请随意编辑代码。我已经编辑了代码。不要乘以1000,1000由活动标题进度条使用。在Progressbar的情况下,最大值为100,因此您可以直接传递onprogresschangedIm的进度变量,该变量在获取
web.setWebChromeClient(新WebChromeClient()时遇到问题{
来使用我现有的源代码。我更新了源代码,并由于我收到的错误而对其进行了注释,有什么想法需要添加吗,也许我没有正确的格式