如何在Android TextView中将Unicode转义字符串显示为表情符号?
解决Android TextView无法显示表情符号的问题
问题出在你调用了StringEscapeUtils.escapeJava()这个方法——它的作用是把字符串里的特殊字符(包括表情这类Unicode字符)转换成Java代码里的转义格式,相当于把原本能直接显示的表情变成了一串转义文本,TextView自然没法解析成对应的表情符号。
给你两种针对性的解决方案:
情况1:从Volley获取的是原始表情字符串
如果服务器返回的str本身就包含可直接显示的表情字符(比如实际是😘而不是转义后的文本),那你完全不需要做转义处理,直接设置到TextView即可:
str = videoname.get(i); viewHolder.textss.setText(str); Log.e("emos", str);
情况2:从Volley获取的是转义后的Unicode序列
如果服务器返回的是类似"\u00F0\u009F\u0098\u0098"这种已经被转义的文本,那你需要做反转义操作,用StringEscapeUtils.unescapeJava()把转义序列还原成原始表情字符:
str = videoname.get(i); String decodedStr = StringEscapeUtils.unescapeJava(str); viewHolder.textss.setText(decodedStr); Log.e("emos", decodedStr);
额外注意
确保你的TextView使用的字体支持表情符号:Android系统默认的Roboto字体已经支持绝大多数常用表情,但如果是自定义字体,要确认该字体包含对应的Emoji字符集,否则还是无法正常显示。
内容的提问来源于stack exchange,提问作者Pooja Pachchigar
相关产品推荐
相关产品推荐

