目前,我正在尝试各种肤色和性别的表情符号。
下面的XML代码在呈现过程中没有问题。
<TextView
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="😀"
android:textSize="48sp" />
“咧嘴笑”表情符号具有Unicode U+1F 600
然而,根据来自
https://emojiterra.com/grinning-face/(“Java,JavaScript & JSON”显示“\uD83D\uDE00”)
如果我用
<TextView
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\uD83D\uDE00"
android:textSize="48sp" />
或
<TextView
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="\u1F600"
android:textSize="48sp" />
没有一个真的能用。我能知道为什么会这样吗?我怎么能😀用转义的unicode格式写“”?
p/s
注意,如果我们在桌面环境下运行,以下2行Java代码可以正常工作。
public class Main {
public static void main(String[] args) {
System.out.println("\uD83D\uDE00");
System.out.println("😀");
}
}
2条答案
按热度按时间0sgqnhkj1#
在strings.xml中添加\uD83D\uDE00对我有用
7ajki6be2#
在XML中,任何字符都可以使用其Unicode代码点进行编码,作为所谓的“字符实体引用”,使用如下语法:
最初的
&
字符引入实体引用,尾随的;
终止它。#
表示引用是一个 * 数字 * 引用(与通过名称引用实体相反),x
表示数字是十六进制的。1F600
是Unicode码点。注意:Java和JavaScript使用
\
字符作为转义机制,但在XML中,就像在HTML中一样,它没有特殊意义;一个\
只是表示一个\
。