问题
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>😄";
Spanned spanned = Html.fromHtml(myHtml, null, null);
Here html string has 😄
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?
回答1:
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>😄";
Spanned spanned = AndroidEmoji.ensure(myHtml);
for more check here gitcode.
回答2:
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.
来源:https://stackoverflow.com/questions/49270267/fromhtml-different-behaviour-on-jellybean-and-kitkat-and-above