Webview 不显示带颜色的文本
Posted
技术标签:
【中文标题】Webview 不显示带颜色的文本【英文标题】:Webview doesn't display text with color 【发布时间】:2019-06-26 05:42:59 【问题描述】:在我的应用中,我在 webview 中显示了一些 html 内容:
String webViewConent = 'this is some <span style="color:#2ecc71">sample</span> string'
webView.loadData(omowienie, "text/html; charset=utf-8", "UTF-8");
但是,在与其他事情相关的最后一次应用更新之后,对于某些用户来说,webview 无法正常工作。他们只看到 span 标签之前的字符串。该问题与任何特定的 android 版本无关。
【问题讨论】:
我在自己的应用中遇到了同样的问题,赞! 您尝试过 sample 吗? 不,html内容是通过我网站上的所见即所得编辑器创建的,它不允许字体标签...您什么时候遇到这个问题? 我明白了。我对这个字符串有同样的问题:<body style = \'font-family: Montserrat;文本对齐:居中; line-height: 1.5em\'>你有</font><span style =\'color: #00B460;字体大小:22pt\'> %1$d </span><span style =\'color: #FFFFFF; font-size: 16pt\'> 使用 Html.fromHtml 函数关闭锁 剩下的秒数。在某些设备上可以正常工作,而在其他设备上则不行 @NicolaGallazzi 似乎是由 webview 更新引起的 【参考方案1】:同样的问题,我发现 base64 编码可以快速解决:
String base64 = android.util.Base64.encodeToString(html.getBytes("UTF-8"), android.util.Base64.DEFAULT);
mWebView.loadData(base64, "text/html; charset=utf-8", "base64");
【讨论】:
它已从我的 html 中移除颜色 这对我有用,也保留了颜色。我是否正确地假设,因为 auf 井号而需要编码? 在 html.getBytes("UTF-8") 上显示错误,无法识别 html 谢谢!这对我有用,但提到编码也让我想到了this answer,它提供了我认为更简单的another work-around。【参考方案2】:我今天遇到了同样的问题。作为一个简单的解决方法,我将 CSS 中的十六进制颜色替换为 RGB 等效项。
之前
<span style="color: #3050c0">Some text</span>
之后
<span style="color: rgb(48, 80, 192)">Some text</span>
【讨论】:
这特别意味着数字符号(U + 0023)是问题,对吧?这是一个明显的解析器错误吗?我想知道它是记录在案的还是故意的。【参考方案3】:我发现this answer 中关于 WebView 编码的方法似乎可以解决这个问题。不要使用loadData
,试试loadDataWithBaseURL
:
webview.loadDataWithBaseURL(null, html, "text/html; charset=utf-8", "utf8", null)
【讨论】:
【参考方案4】:我也有同样的问题。我的应用在 span 标签后不显示文本。有些设备工作正常,但有些设备不工作。点赞!
<p><span style="color:#0000CD"><strong>Materials:</strong></span></p>
根据我的研究和实验,我已在我的设备上禁用了 Android System Webview 应用程序。由于这个过程,我的应用程序正常工作。但是,对我来说,这不是一个解决方案。你有什么想法?
【讨论】:
第一次遇到这个问题是什么时候?就我而言,这是 2 天前 @mik.ro 是的,这已在 2 天前开始,并且仍在继续。我正在寻找解决这个问题的方法,但我找不到方法。我希望我们能解决这个问题。 我想,这个问题出现在Android System Webview。我有两个设备。我检查了他们的 android 系统 webview 应用程序版本,我发现他们的版本不同。此外,谷歌已于 2019 年 1 月 29 日发布了新版本。但我不知道如何解决这个问题。 在我的其他应用程序中,webview 在某些情况下也不起作用。我很确定它已连接到最新的 webview 更新【参考方案5】:我认为问题在于 Android Webview System 中的新更新。旧版本对我有用。
我这里的替代解决方案是在您的手机中卸载 Android Webview System,以便您可以使用默认版本(如果您的应用上传到 Google Playstore 并且有很多用户,此解决方案并不理想)
第二个选项是您可以同时删除html中的颜色和背景颜色代码,它会起作用(我认为这是Android Webview System的错误,我们只需要等他们解决问题)
【讨论】:
【参考方案6】:我也有同样的问题。可能是Android WebView系统的bug,解决方法是使用字体标签给文字上色。
String webViewConent = "this is some <font style="color:green">sample</font> string";
注意:此代码不适用于十六进制格式颜色
【讨论】:
【参考方案7】:我没有找到解决办法,但我能够解决使用原始 HTML 更改字符串的问题。只要您已经知道要显示的颜色,这可能对其他人有所帮助:
String newString = originalString.replaceAll("color:#888888", "color:gray");
【讨论】:
以上是关于Webview 不显示带颜色的文本的主要内容,如果未能解决你的问题,请参考以下文章
使用 webview 显示来自 sdcard 的图像不起作用