【问题标题】:Adding a progress bar to android webview java向android webview java添加进度条
【发布时间】:2016-12-02 17:00:51
【问题描述】:

拜托我是 android 开发的新手,我有我的网站,我在 webview 中加载并且正在工作我想添加一个进度条来显示链接何时处理以在页面加载后呈现和隐藏​​进度条. 请我看到很多例子,但我在尝试实现它时一直出错,请有人帮我使用我自己的 webview 例如。

package com.mypage.mypage;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;


public class SourceProjectActivity extends AppCompatActivity {

    private WebView projectLoaderView;
    private ProgressBar progress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_source_project);
        projectLoaderView = (WebView)findViewById(R.id.sourcejailview);
        WebSettings webSettings = projectLoaderView.getSettings();

        progress = (ProgressBar) findViewById(R.id.progressBar);
        progress.setMax(100);

        webSettings.setJavaScriptEnabled(true);
        webSettings.setSaveFormData(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setDomStorageEnabled(true);
        //local offline loader
        webSettings.setCacheMode( WebSettings.LOAD_DEFAULT );

        projectLoaderView.loadUrl("http://google.com");
        projectLoaderView.setWebViewClient(new WebViewClient());
        SourceProjectActivity.this.progress.setProgress(0);
    }

    private class MyWebViewClient extends WebViewClient {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            //super.onProgressChanged(view, newProgress);
        }
    }

    public void setValue(int progress) {
        this.progress.setProgress(progress);
    }

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

}

这是我的 xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app=""
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_source_project"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mypage.mypage.SourceProjectActivity">

    <WebView
        android:id="@+id/sourcejailview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true" >

        <ProgressBar
            style="@android:style/Widget.Material.Light.ProgressBar.Small"
            android:layout_width="match_parent"
            android:layout_x="124dp"
            android:layout_y="43dp"
            android:id="@+id/progressBar"
            android:layout_height="wrap_content" />
    </WebView>
</RelativeLayout>

【问题讨论】:

  • 什么样的错误?发布堆栈跟踪
  • @snachmsm 当我安装 apk 时,它显示应用程序已停止工作,并且我的模拟器无法正常工作,因此我必须使用手机对其进行测试
  • 这里有一个answer,表示您要实现的目标
  • @Alex,好的,所以从设备中放入错误堆栈跟踪,甚至更好......没有这一切都只是猜测(最常见的问题)

标签: java android xml webview


【解决方案1】:

WebViewClient 没有 onProgressChanged() 方法。取而代之的是,您可以使用WebChromeClient 并将进度条设置如下:

private class MyWebViewClient extends WebViewClient {
        public void onProgressChanged(WebView view, int newProgress) {
                progress.setProgress(newProgress);
                //Maybe you want to hide it once it reaches 100
                if (newProgress == 100){
                       progress.setVisibility(ProgressBar.GONE);
                }
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2011-05-18
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多