【问题标题】:Emoji Keyboard support for EditField in android表情符号键盘支持 android 中的 EditField
【发布时间】:2014-01-20 20:36:56
【问题描述】:

我的应用程序在三星 Galaxy S3 上使用 Android 4.0。

我想在 Android 应用程序的 EditText 字段中集成 Emoji 字符支持。 任何人都可以建议我,我该如何实现它?

例如,在 whatsapp 和微信应用程序中,TextField 确实支持 Emoji 键盘字符,但在我的应用程序中,它会为我使用 Emoji 键盘输入的每个字符显示 ?

text_message = (EditText) findViewById(R.id.editText1);
    text_view = (textView) findViewById(R.id.textView1);
    btntest = (Button) findViewById(R.id.button1);
    btntest.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {

            text_swype.setText(text_message.getText().toString());
        }
    });

我也尝试https://github.com/IPL/iOSStyleEditText

来自http://klncity1.wordpress.com/tag/emoji/的表情符号和字体

但不工作

【问题讨论】:

  • 您能否分享您的代码,详细说明您是如何绘制文本的。
  • @dinesh 你还需要什么吗?
  • 您是通过覆盖 onDraw 方法进行自定义绘图,还是使用 Editext 本身绘制文本。如果您要覆盖 onDraw,您可以分享您的 onDraw 函数的代码。

标签: android unicode android-softkeyboard emoji


【解决方案1】:

这取决于TextView 或其子类(如EditText)使用的字体。

每个View 都可以显示表情符号,因为 Unicode 中包含数百个表情符号,这些也已成为大多数表情符号键盘和 WhatsApp 等应用程序使用的默认值。

但是,例如,您不会看到在 WhatsApp 中看到的那些彩色图像。这是因为 WhatsApp 使用自定义字体/图像来替换默认外观。

但是,如果您将表情符号添加到普通“消息”应用程序或其他地方的文本字段中,您应该会看到普通的 Android 样式,即显示 Android 机器人的单色表情符号。

以下是常见表情符号及其 Unicode 代码点的列表:

https://github.com/delight-im/Emoji

它们都支持 Android 的普通字体。我猜你可能在布局中更改了EditText 的字体。

【讨论】:

    【解决方案2】:

    您可以使用此库中的EmojiconTextViewEmojiconEditTexthttps://github.com/rockerhieu/emojicon

    【讨论】:

    • 您好,我正在使用该库,并且表情符号显示良好,但其他非表情符号字符被解码为日语字符...我该怎么办?谢谢
    • 大家好,我在上面的库中使用过,效果很好,但是在选择表情符号图标后,我需要将它们转换为 unicode 字符并以 JSON 格式发送到服务器,并在我从服务器收到时相应地显示它们,我我不知道如何对它们进行 unicode。请帮帮我。
    • @Billyjoker 您尝试显示的文字是什么?
    • @RajkumarMandera 你只需要获取EmojiconTextViewEmojiconEditText 的文本并发送到服务器。它们应该已经是 unicode 了。
    • 我想通了,在 POST 上向服务器发送文本时,我没有设置 Charset-UTF-8。无论如何感谢您的回复 Hieu Rocker
    【解决方案3】:

    Here is the list of available emoji Unicode

    向服务器发送内容需要使用org.apache.commons.lang3.escapeJava(...),从服务器获取数据时需要将Unicode 反转为表情符号,因此必须使用org.apache.commons.lang3.unescapeJava(...)

    【讨论】:

      【解决方案4】:

      您必须使用库中的“EmojiconEditText”。 它将显示 Eemojies。

      使用其中任何一种。

      EmojiconTextView: a TextView which can render emojis.
      EmojiconEditText: a EditText which can render emojis.
      EmojiconGridFragment: a fragment contains emojis in a GridView for the user to choose.
      EmojiconsFragment: a fragment contains many set of emojis for the user to choose.
      

      【讨论】:

        【解决方案5】:

        下面是来自 org.apache.commons.lang3 的 Util

        @AZ_ 发布的答案是正确的,但 util 名称已更新如下:

        将字符串发送到服务器:

        org.apache.commons.lang3.StringEscapeUtils.escapeJava(mEdText1.getText().toString()
        

        从服务器读取字符串为:

        org.apache.commons.lang3.StringEscapeUtils.unescapeJava(mData.get(position).getText())
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-29
          • 2013-08-10
          • 2015-11-23
          • 2017-09-11
          • 2021-05-29
          • 2015-10-16
          • 2014-04-20
          • 1970-01-01
          相关资源
          最近更新 更多