如何在文本视图中通过 unicode 设置表情符号?
Posted
技术标签:
【中文标题】如何在文本视图中通过 unicode 设置表情符号?【英文标题】:How to set emoji by unicode in a textview? 【发布时间】:2015-01-09 16:59:27 【问题描述】:您好,我想做以下事情:
??? unicode = U+1F60A
String emoji = getEmojiByUnicode(unicode)
String text = "So happy "
textview.setText(text + emoji);
在我的文本视图中得到这个:
好开心????
如何实现getEmojiByUnicode(unicode)
?
unicode
变量应该是什么类型? (字符串、字符、整数?)
请注意,我不想使用 Drawables!
【问题讨论】:
【参考方案1】:找到解决办法:
在我的 unicode 中,我将 'U+' 替换为 '0x'
示例:将“U+1F60A”替换为“0x1F60A”
这样我得到了一个'int'样
int unicode = 0x1F60A;
可以搭配使用
public String getEmojiByUnicode(int unicode)
return new String(Character.toChars(unicode));
所以 Textview 显示?没有 Drawable
试试http://apps.timwhitlock.info/emoji/tables/unicode
【讨论】:
在 5.1 上工作,但在 4.4.4 上我得到一个?对于我的表情符号字符串 是否可以在strings.xml文件中做到这一点? @user1232726,这取决于用户的手机,包括正在使用的表情符号。 不幸的是,它不适用于 32 位 Unicode,例如 U+1F1EF U+1F1F2。此值超出整数边界。 注意:对于 Kotlin > fun getEmoji(unicode: Int): String return String(Character.toChars(unicode)) 【参考方案2】:你可以直接在字符串资源中使用 Emojis,使用十进制代码如下:
😊
例如:
<string name="emoji">I am happy 😊</>
【讨论】:
这是一个很好的答案;要查找表情符号的十进制代码,您可以使用 quackit.com/character_sets/emoji 我没有找到必要的 x 构建时出错:字符引用“ @hmac 我回滚了答案,删除了x
【参考方案3】:
注意:对于 Kotlin
fun getEmoji(unicode: Int): String
return String(Character.toChars(unicode))
【讨论】:
【参考方案4】:我想我找到了最直接的解决方案。就我而言,我想在一个芯片组中的一个芯片上添加一个火 (?) 表情符号。我只是去了Emojipedia Fire Entry1,单击表情符号含义下方的copy
按钮,然后将其粘贴到我的Kotlin 代码中。这是粘贴后的样子的代码 sn-p。
val chip = Chip(context)
chip.text = "\uD83D\uDD25 New"
这是我在设备上运行代码后的样子。我也包括了其他芯片?;
PS:我在最新版本的 android Studio(Arctic Fox v. 2020.3.1)上运行了这个。结果可能与旧版本不同。
脚注
-
Emojipedia 是一个免费的百科全书,列出并提供了所有符合 Unicode 标准的表情符号的含义。您可以随时前往那里寻找富有洞察力的表情符号含义和其他表情符号需求。
【讨论】:
【参考方案5】:感谢 Kenneth Murerwa,他的回答解决了我的问题。只需复制并粘贴您从https://emojipedia.org 的“复制”按钮获得的内容,并在旧引号之间。是的,这是一个菜鸟点,但是嘿,我们一开始都是菜鸟?
val emoji = "\uD83D\uDE00 \uD83D\uDC4C"
然后你可以将它添加到你需要的任何字符串中。它可以很好地呈现在手机屏幕上,但不会显示在 println 中
println("?")
【讨论】:
【参考方案6】:你可以这样做:
Unicode:uni-1F4A1
仅供参考,我正在使用 Kotlin。
创建效用函数如下:
private fun getEmojiByUnicode(reactionCode: String): String
val code = reactionCode.substring(4).toInt(16)
return String(Character.toChars(code))
其中substring(4)
将被丢弃uni-
这3 个字符,而您拥有1F4A1
。
将 Emoji 设置为 TextView:(我在我的项目中使用 ViewBinding)
mViewBinding.textViewEmoji.text = getEmojiByUnicode(data.Reaction)
更多详情:Integer.parseInt ("0x1F60A") ends with NumberformatException
【讨论】:
以上是关于如何在文本视图中通过 unicode 设置表情符号?的主要内容,如果未能解决你的问题,请参考以下文章
像我们在 uitextfield 中插入表情符号(unicodes)一样插入图像