如何在textview中通过unicode设置表情符号?

Gil*_*ert 79 unicode android encode textview emoji

嗨,我想做以下事情:

??? unicode = U+1F60A
String emoji = getEmojiByUnicode(unicode)
String text = "So happy "
textview.setText(text + emoji);
Run Code Online (Sandbox Code Playgroud)

在我的textview中得到这个:

很高兴

如何实现'getEmijoByUnicode(unicode)'?

应该是什么类型的'unicode'?(String/char/int ??!)

请注意,我不想使用Drawables!

Gil*_*ert 159

找到了解决方案:

在我的unicode中,我将' U + ' 替换为' 0x '

示例:将' U + 1F60A ' 替换为' 0x1F60A '

这样我得到了一个'int'

int unicode = 0x1F60A;
Run Code Online (Sandbox Code Playgroud)

哪个可以用

public String getEmojiByUnicode(int unicode){
    return new String(Character.toChars(unicode));
}
Run Code Online (Sandbox Code Playgroud)

所以Textview显示没有Drawable

尝试使用http://apps.timwhitlock.info/emoji/tables/unicode

  • 是否可以在strings.xml文件中执行此操作? (18认同)
  • 适用于5.1,但在4.4.4我得到了?为我的表情符号字符串 (3认同)
  • 不幸的是,它不适用于 32 位 Unicode,例如 U+1F1EF U+1F1F2。该值在整数边界之外。 (3认同)

P1x*_*ler 28

您可以使用十进制代码直接在字符串资源中使用Emojis,如下所示:

😊
Run Code Online (Sandbox Code Playgroud)

例如:

<string name="emoji">I am happy &#128522;</>
Run Code Online (Sandbox Code Playgroud)

注意:android是标准XML转义序列中的x.

  • 这是一个很好的答案。要查找表情符号的十进制代码,可以使用类似https://www.quackit.com/character_sets/emoji/的代码 (8认同)
  • @ Dr.aNdRO只需从表情符号代码中删除`x` (4认同)
  • 构建时出错:字符参考“&#” (3认同)

Bip*_*rti 7

注意:对于 Kotlin

fun getEmoji(unicode: Int): String {
    return String(Character.toChars(unicode))
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*rwa 5

我想我找到了最直接的解决方案。就我而言,我想向芯片组中的其中一个芯片添加火 () 表情符号。我只是转到Emojipedia Fire Entry 1,单击copy表情符号含义正下方的按钮,然后将其粘贴到我的 Kotlin 代码中。这是粘贴后的代码片段。

val chip = Chip(context)
chip.text = "\uD83D\uDD25 New"
Run Code Online (Sandbox Code Playgroud)

这是在我的设备上运行代码后的样子。我还包括了其他芯片;

芯片在设备中的外观图像样本

PS:我在最新版本的Android Studio(Arctic Fox v.2020.3.1)上运行了这个。结果可能与旧版本不同。

脚注

  1. 表情符号百科是一本免费的百科全书,列出了 Unicode 标准下批准的所有表情符号并提供其含义。您可以随时前往那里获取深刻的表情符号含义和其他表情符号需求。


小智 5

所有的功劳都归功于肯尼斯·穆勒瓦(Kenneth Murerwa),他的回答解决了我的问题。只是附和一下,只需复制并粘贴从https://emojipedia.org上的“复制”按钮获得的内容,并将其粘贴到旧引号之间即可。是的,这是一个菜鸟点,但是嘿,我们一开始都是菜鸟

val emoji = "\uD83D\uDE00 \uD83D\uDC4C"
Run Code Online (Sandbox Code Playgroud)

然后你可以将它添加到你需要的任何字符串中。它在手机屏幕上渲染得很好,尽管它不会显示在 println 中

println("")
Run Code Online (Sandbox Code Playgroud)