我有一个简单的代码,可以在按钮的文本中显示hearts卡套装:
int intHearts= 0x2665;
String stringHearts= new String(Character.toChars(intHearts));
btnHearts.setText(stringHearts);
在模拟器(Android 7)中效果很好,显示了红色表情符号。相反,当我从华硕Zenfone 2(Android 5)运行应用程序时,我只能看到心脏的黑色角色♥。那么我如何获得手机显示红色表情符号?
u 2665在引入表情符号之前就添加到Unicode中。这就是为什么此字符有两种演示模式(文本和表情符号)。默认情况下,使用哪个字符表示特定于应用程序。出于遗产原因,经常使用文本演示文稿(黑心)。
您可以通过附加变体选择器字符手动指定字符表示。u fe0e用于文本演示。u fe0f表示表情符号。
不幸的是,Android似乎仅支持Android 6.0之前的文本演示(忽略变异选择器)。从那时起,仅在表情符号演示中(再次忽略变异选择器)。
要解决此问题,您可以使用表情符号支持库。
设置一个Unicode。
int smileEmoji = 0x1F60A;
您希望它显示的位置。
getEmojiByUnicode(smileEmoji)
方法。
public String getEmojiByUnicode(int unicode){
return new String(Character.toChars(unicode));
}