【问题标题】:Display emoji from unicode in Android在 Android 中显示来自 unicode 的表情符号
【发布时间】:2018-02-12 00:40:54
【问题描述】:
我有这个简单的代码可以在按钮的文本中显示红心牌:
int intHearts= 0x2665;
String stringHearts= new String(Character.toChars(intHearts));
btnHearts.setText(stringHearts);
它在模拟器 (Android 7) 中运行良好,显示红色表情符号。相反,当我从华硕 Zenfone 2 (Android 5) 运行应用程序时,我只能看到红心♥的黑色字符。那么如何让我的手机显示红色表情符号呢?
【问题讨论】:
标签:
android
unicode
emoji
display
【解决方案1】:
U+2665 早在表情符号引入之前就已添加到 Unicode 中。这就是为什么这个角色有两种呈现模式(文本和表情符号)。默认情况下使用哪种字符表示在某种程度上是特定于应用程序的。由于遗留原因,通常使用文本表示(黑心)。
您可以通过附加变体选择器字符来手动指定字符表示。 U+FE0E 用于文本呈现。 U+FE0F 用于表情符号展示。
不幸的是,Android 6.0 之前似乎只支持文本呈现(忽略变体选择器)。从那时起,只有表情符号演示(同样,忽略变体选择器)。
要解决此问题,您可以使用 EmojiCompat 支持库。
【解决方案2】:
设置一个 unicode。
int smileEmoji = 0x1F60A;
您希望它显示的位置。
getEmojiByUnicode(smileEmoji)
方法。
public String getEmojiByUnicode(int unicode){
return new String(Character.toChars(unicode));
}