1

在此处输入图像描述

如何修改 webview 的进度条或如何在顶部 webview 上创建自定义进度?

4

2 回答 2

0

要实现自定义进度条,您需要一个 Runnable 线程和一个消息处理程序,它们将不断更新您的进度条。

检查下面的片段: -

获取您的进度条,然后开始新的线程

myProgressBar=(ProgressBar)findViewById(R.id.progressbar);
new Thread(myThread).start();

新线程:-

private Runnable myThread = new Runnable(){

@Override
public void run() {
while (myProgress<100){
try{
myHandle.sendMessage(myHandle.obtainMessage());
Thread.sleep(1000);
}
catch(Throwable t){
}
}
}
}

从上面的 try 块发送的消息将在下面的Handler的handleMessage方法中处理:-

Handler myHandle = new Handler(){

@Override
public void handleMessage(Message msg) {
myProgress++;
myProgressBar.setProgress(myProgress);
}
}

希望这可以帮助!

于 2013-01-30T11:00:01.607 回答
0

那是用于自定义进度条。如果您需要使用Webview,那么我认为这应该可以帮助您。

WebView 有几个自定义点,您可以在其中添加自己的行为。他们是:

  • 创建和设置WebChromeClient子类。当发生可能影响浏览器 UI 的事情时调用此类,例如,在此处发送进度更新和 JavaScript 警报。

  • 创建和设置WebViewClient子类。当发生影响内容呈现的事情时(例如,错误或表单提交)将调用它。您还可以在此处拦截 URL 加载(通过 shouldOverrideUrlLoading ())。

    // To display the progress in the activity title bar, like the
    // browser app does.
    getWindow().requestFeature(Window.FEATURE_PROGRESS);
    
    webview.getSettings().setJavaScriptEnabled(true); // javascript if needed.
    
    final Activity activity = this;
    webview.setWebChromeClient(new WebChromeClient() {
       public void onProgressChanged(WebView view, int progress) {
         // The progress meter will automatically disappear when we reach 100%
         activity.setProgress(progress * 1000);
       }
     });
    
     webview.setWebViewClient(new WebViewClient() {
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, "Page Load Error! " + description, Toast.LENGTH_SHORT).show();
       }
     });
    
     webview.loadUrl("http://www.stackoverflow.com");
    

请参考this和this获得更清晰的信息。

于 2013-01-30T11:25:33.843 回答