简体   繁体   中英

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

I am using fromHtml to display formatted text (bold italic etc) in TextView . However, I found it's behaviour is different on JellyBean (4.1.2) and KitKat(4.4.2)

Here is code:

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

Here html string has &#128516; which is unicode for an emoji. Now after calling fromHtml it returns following value on KitKat (and above):

spanned = hello😄

Here is screenshot of Android Studio for the same:

在此处输入图片说明

This is expected behaviour as we can see corresponding emoji in spanned .

But on JellyBean the same call returns following value:

spanned = hello�� 

Here is screenshot:

在此处输入图片说明

This is indeed not expected and driving me nuts. I don't know what I am doing wrong. If anyone having idea please can you help?

add this java file in your src and add this font .ttf file in assets dir

now use this like below

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

for more check here gitcode.

Surprisingly, root of this problem was in Html.toHtml which I had used to convert text in TextView to html. I used custom toHtml and this problem solved. I used .toHtml written in this answer. Indeed it is great solution. I wonder how Android's original Html.toHtml is so lame and defective.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM