WebView加载失败或网络异常时,替换WebView的错误界面;
生活随笔
收集整理的這篇文章主要介紹了
WebView加载失败或网络异常时,替换WebView的错误界面;
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WebView在加載失敗時會顯示一個失敗原因的界面,各個手機顯示的界面還都不一樣,部分手機還會把Url顯示出來;我們要做的就是統一加載失敗的界面;
大概思路:在WebView這個控件上面再覆蓋一個View,監聽WebView加載失敗時把這個View顯示出來,這樣用戶就看不到原來的WebView的失敗界面了。
監聽WebView開始加載、加載完成、加載失敗;
在開始加載時,把自定義失敗的View隱藏,加載失敗時把這個View顯示出來;
mWebView.setWebViewClient(new WebViewClient() {//在開始加載網頁時會回調@Overridepublic void onPageStarted(WebView webView, String s, Bitmap bitmap) {super.onPageStarted(webView, s, bitmap);ivError.setVisibility(View.INVISIBLE);mWebView.setVisibility(View.VISIBLE);}//加載錯誤的時候會回調@Overridepublic void onReceivedError(WebView webView, int i, String s, String s1) {super.onReceivedError(webView, i, s, s1);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {return;}ivError.setVisibility(View.VISIBLE);mWebView.setVisibility(View.INVISIBLE);}//加載錯誤的時候會回調@Overridepublic void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {super.onReceivedError(webView, webResourceRequest, webResourceError);if (webResourceRequest.isForMainFrame()) {ivError.setVisibility(View.VISIBLE);mWebView.setVisibility(View.INVISIBLE);}}//加載完成的時候會回調@Overridepublic void onPageFinished(WebView webView, String s) {} });點擊加載失敗界面,重新載入這個網頁;
ivError.setOnClickListener(v -> mWebView.reload());刷新后WebView退出不了,重定向的問題解決;
在setWebViewClient這個方法中添加:
@Overridepublic boolean shouldOverrideUrlLoading(WebView webView, String url) {WebView.HitTestResult hitTestResult = webView.getHitTestResult();//hitTestResult==null解決重定向問題(刷新后不能退出的bug)if (!TextUtils.isEmpty(url) && hitTestResult == null) {return true;}return super.shouldOverrideUrlLoading(webView, url);}看一下XML布局:
<FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><com.cc.webview.X5WebViewandroid:id="@+id/mWebView"android:layout_width="match_parent"android:layout_height="match_parent" /><ImageViewandroid:id="@+id/ivError"android:layout_width="match_parent"android:layout_height="match_parent"android:src="@mipmap/web_loaderror"android:scaleType="centerCrop"android:visibility="invisible"/></FrameLayout>大概就是這樣,WebView刷新后不能退出這個問題重寫一下“shouldOverrideUrlLoading”這個方法就行了;
總結
以上是生活随笔為你收集整理的WebView加载失败或网络异常时,替换WebView的错误界面;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 证券交易所--本方最优对手方最优的区别
- 下一篇: 南京 学计算机的学校,南京小学生暑假学计