android 如何在XML布局文件中以转义的unicode格式编写表情符号?

9jyewag0  于 2023-04-04  发布在  Android
关注(0)|答案(2)|浏览(205)

目前,我正在尝试各种肤色和性别的表情符号。
下面的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("😀");
    }
}
0sgqnhkj

0sgqnhkj1#

在strings.xml中添加\uD83D\uDE00对我有用

<string name="txt_emoji">\uD83D\uDE00</string>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <androidx.appcompat.widget.AppCompatTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/txt_emoji" />
</LinearLayout>

7ajki6be

7ajki6be2#

在XML中,任何字符都可以使用其Unicode代码点进行编码,作为所谓的“字符实体引用”,使用如下语法:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:textColor="#000000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="&#x1F600;"
    android:textSize="48sp" />

最初的&字符引入实体引用,尾随的;终止它。#表示引用是一个 * 数字 * 引用(与通过名称引用实体相反),x表示数字是十六进制的。1F600是Unicode码点。
注意:Java和JavaScript使用\字符作为转义机制,但在XML中,就像在HTML中一样,它没有特殊意义;一个\只是表示一个\

相关问题