fromHtml:JellyBean 和 KitKat(及更高版本)上的不同行为

fromHtml: Different behaviour on JellyBean and KitKat (and above)

我正在使用 fromHtmlTextView 中显示格式化文本(粗体斜体等)。但是,我发现它在 JellyBean (4.1.2) 和 KitKat(4.4.2)

上的行为不同

代码如下:

    String myHtml = "<b>hello</b>&#128516;";
    Spanned spanned = Html.fromHtml(myHtml, null, null);

这里 html 字符串有 &#128516;,这是表情符号的 unicode。现在在调用 fromHtml 之后它 returns 遵循 KitKat(及以上)的值:

spanned = hello

这是 Android Studio 的屏幕截图:

这是预期的行为,因为我们可以在 spanned 中看到相应的表情符号。

但在 JellyBean 上同样调用 returns 以下值:

spanned = hello�� 

截图如下:

这确实出乎我的意料,让我抓狂。我不知道我做错了什么。如果有人有想法请你帮忙?

assets dir

中添加this java file in your src and add this字体.ttf文件

现在像下面这样使用

String myHtml = "<b>hello</b>&#128516;";
Spanned spanned = AndroidEmoji.ensure(myHtml);

查看更多信息gitcode.

令人惊讶的是,这个问题的根源在于 Html.toHtml,我曾将 TextView 中的文本转换为 html。我使用自定义 toHtml 并解决了这个问题。我用 .toHtml 写成 this 的回答。确实这是很好的解决方案。我想知道 Android 的原版 Html.toHtml 怎么这么蹩脚和有缺陷。