HarmonyOS 鸿蒙Next支持文本内展示emoji功能

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next支持文本内展示emoji功能

1、应用内有聊天场景,想实现文本消息展示emoji表情

2、目前通过ForEach组件对文本内容text进行正则匹配,但是目前找到的方法无法返回所有匹配的和未匹配的字符串,匹配的字符串需要通过内容找到对应的图片进行展示,未匹配的字符串当普通文本展示

3、请问如何实现

3 回复

要根据split的返回结果渲染组件,split传入的正则是模糊的,要根据不同的分隔符拆分,渲染伪代码如下所示:

ForEach((this.message?.getMsgContent() as TextBody).text?.split(new RegExp(',')), (data: string) => {
  if (',' === data) {
    ImageSpan($r('app.media.resource'))
  } else if ('.' === data) {
    Text(data)
  }else {
    Span(data)
  }
}, () => MessageUtil.random()) 

例如将aaa,bbb、ccc拆分成五个字符:aaa , bbb 、 ccc,也就是分隔符也要保留,在安卓上使用的是Pattern.matcher

应该先转数组,再转字符串,在转字符串的时候.join('XXXX'),'XXX'这个是分隔符

更多关于HarmonyOS 鸿蒙Next支持文本内展示emoji功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


本地维护一套 文本映射emoji的字典,例如

let emojiMap:Record<string,string> = {
'[笑脸]':'😁',
'[帅气]':'😎',
}

每次将文本内容遍历上面的字典,如果有匹配的,则替换为对应的emoji

在HarmonyOS(鸿蒙)Next系统中,支持文本内展示emoji功能通常是由系统内置的文本渲染引擎和Unicode标准库共同实现的。这意味着,只要你的应用或系统遵循标准的Unicode编码规范,并且使用了系统提供的文本渲染组件,理论上就应该能够正常展示emoji表情符号。

如果你的应用在HarmonyOS Next系统上无法正确显示emoji,可能是以下几个原因导致的:

  1. 应用未更新Unicode库:确保你的应用或系统使用的Unicode库是最新的,以支持最新的emoji字符。

  2. 字体支持问题:检查你的系统或应用是否使用了支持emoji的字体。有时,自定义字体可能不包含完整的emoji字符集。

  3. 编码问题:确保你的文本数据是以UTF-8或UTF-16等支持Unicode的编码格式存储和传输的。

  4. 系统配置问题:检查系统设置,确保没有禁用或限制emoji的显示。

如果以上检查都无误,但问题依旧存在,那么可能是系统或应用的特定bug导致的。在这种情况下,建议直接联系HarmonyOS的官方客服团队进行进一步的排查和解决。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部