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的错误界面;相关推荐

  1. vue本地项目配置图片加载失败_vue图片加载失败时用默认图片替换的方法

    vue图片加载失败时用默认图片替换的方法 前言 本文主要给大家介绍的关于vue实现图片加载失败时用默认图片替换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 原理 ...

  2. HTML img图片加载失败时用默认图片替换

    原文地址:http://blog.csdn.net/qq_24771775/article/details/50294931 img元素加载图片失败,则变成一个小图标,让页面变得难看.此时如何替换为默 ...

  3. Android WebView 加载失败(net::ERR_CLEARTEXT_NOT_PERMITTED)

    大清早被业务群@了,线上App遇到了问题: 提示:net::ERR_CLEARTEXT_NOT_PERMITTED 之前都是没问题的,又是什么问题呢?应该猜到是Android SDK升级造成的没错了, ...

  4. android 判断webview加载成功,Android:如何检查使用webview.loadUrl时url的成功加载

    不幸的是,目前在WebView中没有简单的方法来确保页面上的所有内容都已成功加载.我们希望在未来的版本中提供更好的API.让我解释一下你现在可以做什么. 首先,为了检测阻止WebView连接服务器加载 ...

  5. android webview加载黑屏,华为10手机打开Webview ANR 黑屏问题

    本帖最后由 huafen346619996 于 2020-6-22 15:41 编辑 @华为的各位开发老师,有app 使用webview打开网页的时候的时候概率性出现黑屏的问题,通过对比市场上其他类型 ...

  6. Android使用WebView加载网页及数据

    今天主要介绍一下Android的一个原生组件-WebView. 在Api中关于这个类的介绍大致就是这是一个可以显示网页的视图,如: webView.loadUrl("http://www.b ...

  7. Android—WebView加载速度优化工程实践

    一.混合开发的优势与缺陷 在混合开发大行其道的今天,很多页面和功能都转由前端实现,客户端只要在APP中嵌入一个WebView即可,同时前端开发的页面对于Android和iOS端的效果是统一的,省去了适 ...

  8. android webview加载不出来,【新手有关问题】Android浏览器中WebView加载不出网页

    当前位置:我的异常网» Android » [新手有关问题]Android浏览器中WebView加载不出网 [新手有关问题]Android浏览器中WebView加载不出网页 www.myexcepti ...

  9. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

最新文章

  1. UVA10212 【The Last Non-zero Digit.】
  2. let const var 比较说明
  3. cannot import name 'imresize'. The package prm under namespace prm could not be imported
  4. 高级指引——自定义节点
  5. Python自动化测试框架有哪些?
  6. 如何区分网线是几类的_小移课堂 | 网线这样选,网速才能嗖嗖的!
  7. mysql远程访问时间长无反应_远程MySQL访问需要很长时间
  8. 判断循环双链表是否对称
  9. turbo c是什么?
  10. 转专业后的迷茫和开始——自学C语言之旅
  11. mysql静默安装_mysql5.7静默安装
  12. utf8编码在线转换html,utf8 gb2312编码在线转换工具
  13. 三维激光扫描后处理软件_青出于蓝 尽锋芒——非白三维发布蓝激光手持三维扫描仪...
  14. 在Word中快速插入分隔线
  15. 云终端能改计算机,云终端旧机改造方案(把旧电脑改成瘦客户机)
  16. 北京农村商业银行:应用质量掘金再造“探秘”之旅
  17. 【科创人】DCloud崔红保:uni-app和HBuilder背后的男人,让天下没有难做的开发
  18. vue生成自定义样式二维码
  19. 贪婪算法————背包问题
  20. 印象笔记Markdown思维导图

热门文章

  1. 2021-2027年全球与中国矫正隐形眼镜行业市场前瞻与投资战略规划分析报告
  2. 小菜鸟的C++游戏编程学习日记(一)
  3. 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》
  4. Nginx 部署、反向代理配置、负载均衡
  5. 网站去除plugin.php小尾巴,dedecms去除首页index.html小尾巴,这种方法是错误的!
  6. 怎样进行微信营销才比较好
  7. 新书推荐 |《广告数据定量分析:如何成为一位厉害的广告优化师》
  8. DQN_Continuous_Action
  9. 文件加密共享防止转发-冷杉云盘
  10. 利用apktool查看apk源代码