【问题标题】:Android insert emoji programmaticallyAndroid以编程方式插入表情符号
【发布时间】:2016-02-25 15:50:14
【问题描述】:

我正在尝试以一种自动将“:)”之类的内容替换为对应的表情符号的方式来实现表情符号。而且我不确定该怎么做,我找到了一张表情符号 UTF 代码表,但我不确定我应该如何以编程方式将它们放入 EditText :/

 inputField=(EditText)temp.findViewById(R.id.inputField);
    inputField.addTextChangedListener(new TextWatcher() {
        boolean justChanged=false;
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(justChanged) {
                justChanged=false;
                return;
            }
            Log.d(s.toString(), s.toString());
            if(s.toString().contains(":)")) {
                justChanged=true;
               inputField.setText(s.toString().replace(":)", "UTF CODE HERE?"));
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

【问题讨论】:

  • 如果您在此处列出的当前方法不起作用,请解释它的错误之处。
  • 并不是说它“不起作用”,我只是不知道如何将表情符号代码放入字符串变量中:/ 我需要一个示例,因为只需将其粘贴在那里即可纯文本格式的确切代码
  • 你试过这个吗:stackoverflow.com/a/8854437/1510063

标签: android utf-8 emoji


【解决方案1】:

实现此目的的最简单方法是将源代码编码为 UTF-8,然后将所需的表情符号粘贴到代码中。然后您需要将-encoding UTF-8 传递给javac。然后,表情符号将在编译时转换为其 Unicode 点。

例如

inputField.setText(s.toString().replace(":)", "?"));

或者,您可以在 Java 字符串中使用 UTF-16 Unicode 点文字,使用 \uXXXX 表示法。从合适的 Unicode 参考站点,例如 http://www.fileformat.info/info/unicode/block/emoticons/list.htm,您可以获得 UTF-16 类型编码或完整的 Java 转义序列。

例如

inputField.setText(s.toString().replace(":)", "\uD83D\uDE00"));

【讨论】:

  • 您提供的链接不是表情符号的完整列表..,不是吗?
  • 我试过上面的代码,不行。只是发出:“\uD83D\uDE00”而不是“:)” 这绝对不能回答这个问题。如果收件人收到这样的字符串:“\uD83D\uDE00”,那就不好了。表情符号严重缺乏清晰度和开放性。这应该不难,我们并没有试图改变表情符号的外观,那为什么不能这样做呢?
  • “它只是发送出去”是什么意思?答案显示了将表情符号放入源代码的两种方法。你用的是哪一个?
猜你喜欢
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 2018-04-08
  • 2021-10-06
  • 2014-09-05
  • 2021-02-07
相关资源
最近更新 更多