[英]Display ® registered trademark symbol in Android v4.0 WebView?
源HTML字符串(包括符号)来自strings.xml资源文件,并注定要在WebView中显示。 我已经在资源中对此进行了测试:
<string name="MY_STRING">®</string>
®
时,我会看到相同的结果®
®
失败,并且该项目无法生成。 这是将字符串资源推送到WebView中的代码:
String html = getString(R.string.MY_STRING);
((WebView)findViewById(R.id.terms_web_view)).loadData(html, "text/html", "UTF-8");
我也尝试过此方法,但没有帮助:webView.getSettings()。setDefaultTextEncodingName(“ UTF-8”);
我将HTML字符串推到Logcat,看起来不错-它正确显示了该符号。 因此,如果字符串正确,并且WebView设置为使用UTF-8,为什么符号不能正确显示?
我在其他设备上测试过的更新 。 我只能在Android v4.04上的Galaxy Nexus上重现此问题。 在Nexus One v2.3.x,v2.3.x上的Wildfire S和v3.2上的Samsung Tab 10.1上,它可以正常工作。 我更改了问题标题,以澄清这是ICS问题。
字符串资源并非旨在容纳任意HTML,包括任意实体引用。
你也许能得到一个任意实体引用,如果你预先逃脱它的工作:
<string name="MY_STRING">&reg;</string>
IIRC,应解码为®
在调用getString()
。
最后,您需要获取®
到WebView
。 如果您无法确定使用字符串资源的方法,则需要将该值存储在其他位置。
您正在使用loadData(html,“ text / html”,“ UTF-8”); 此方法期望变量html中有一个html字符串。 但事实并非如此。 尝试
String html = "<html><body>My text is ®</body></html>";
例如。
-更新为具有完整的html文档
如果将其存储在资源文件中,请使用:
<string name="MY_STRING" formatted="false"><html><body>My text is ®</body></html></string>
这不是Android开发人员的答案,但是如果您尝试向某人发送短信并且Ⓡ和™都不可用作符号(例如在我的LG手机Android 7.0上),则只是简单一些。 只需从此消息线程中复制这些符号,然后将其发送给自己,或将其塞入快速备忘录中即可。 然后,您可以随时使用它们以备将来使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.