【问题标题】:Android webview loading dialogAndroid webview 加载对话框
【发布时间】:2019-08-18 15:10:01
【问题描述】:

我正在尝试在我的 webview 应用程序中实现一个加载对话框,但无论我做什么都行不通。

我想要的是以下内容,每次有人单击 webview 中的链接时,加载对话框都必须像这样弹出:


(来源:wordpress.com

加载完成后它必须消失。谁能告诉我如何在我自己的来源中做到这一点?我尝试了很多东西,但总是有一个问题,所以我真的不知道该怎么做。

这是我的 WebviewActivity:

import android.content.res.Configuration;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebviewActivity extends MainActivity {

    private WebView myWebView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        myWebView = (WebView)findViewById(R.id.webview);        
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);        
        myWebView.setWebViewClient(new WebViewClient());

        myWebView.requestFocus(View.FOCUS_DOWN);
        myWebView.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                    case MotionEvent.ACTION_UP:
                        if (!v.hasFocus()) {
                            v.requestFocus();
                        }
                        break;
                }
                return false;
            }
        });
    }   

    @Override
    public void onResume() {
        super.onResume();
        if ( isOnline() == true )
            myWebView.loadUrl(webLink);
        else if ( isOnline() == false )
            showNoConnectionDialog();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig){        
        super.onConfigurationChanged(newConfig);
    }
}

非常感谢您的帮助!!

【问题讨论】:

标签: android dialog webview loading


【解决方案1】:

你必须像这样覆盖 WebViewClient,

      webview.setWebViewClient(new WebViewClient(){

            @Override
            public void onPageFinished(WebView view, final String url) {

                progressDialog.cancel();


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

                progressDialog.show();
            }
      });

webview.loadUrl(TwitterUrl);

【讨论】:

    【解决方案2】:

    这是我的最终解决方案:

        myWebView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                progressDialog.show();
                view.loadUrl(url);
                return true;                
            }
            @Override
            public void onPageFinished(WebView view, final String url) {
                progressDialog.dismiss();
            }
        });
    

    【讨论】:

      【解决方案3】:

      这可以通过 WebChromeClient 实现。它确实对我有用。

      代码sn-p:

      progressDialog.show(); // Add before page load
      webView.setWebChromeClient(new HelpWebChromeClient());
      private class HelpWebChromeClient extends WebChromeClient {
         @Override
         public void onProgressChanged(WebView view, int newProgress) {
           if(newProgress == 100)
              progressDialog.dismiss();
           }
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多