如何将EditText中的文本和表情符号转换为字符串?

5

如何将EditText中的文本和表情符号提取为字符串?

使用以下代码,我已经在EditText中添加了表情符号/表情符号,但是如何以字符串格式获取EditText中的文本/表情符号。

    ImageGetter imageGetter = new ImageGetter() {
        public Drawable getDrawable(String source) {
            Drawable d = getResources().getDrawable(
                    R.drawable.happy);
            d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
            return d;
        }
    };

    cs = Html.fromHtml(
            "<img src='"
                    + getResources()
                            .getDrawable(R.drawable.happy)
                    + "'/>", imageGetter, null);
    edttxtemoji.setText(cs);

我正在这里做类似的事情!!! https://dev59.com/IGQn5IYBdhLWcg3wg3eR - Etienne Lawlor
2个回答

8
请使用以下函数。
public static Spannable getSmiledText(Context context, String text) {
          SpannableStringBuilder builder = new SpannableStringBuilder(text);
          int index;for (index = 0; index < builder.length(); index++) {
            for (Entry<String, Integer> entry : emoticons.entrySet()) {
              int length = entry.getKey().length();
              if (index + length > builder.length())
                continue;
              if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) {
                builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length,
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                index += length - 1;
                break;
              }
            }
          }
          return builder;
        }

following for emotions code...

private static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>();
        static {
          emoticons.put("8-)", R.drawable.s1);
          emoticons.put(":-&", R.drawable.s2);
          emoticons.put(">:-)", R.drawable.s3).....};

使用settext设置文本

tv_msg_send.setText(getSmiledText(getApplicationContext(), edt_msg.getText().toString()));

这段代码无法获取表情符号。如果我使用你的代码,会返回文本“obj”,所以对我来说没有用处。 - Dipak Keshariya
@dipak:但我已经得到了在文本视图中设置表情符号的完美文本。还有一件事,我在发布这篇文章之前尝试过多次使用您的代码,但是我无法得到解决方案。现在我不再使用ImageGetter方法,而是使用“addTextChangedListener”并通过调用“getSmiledText”函数直接将笑脸代码更改为图像。所以请再试一次,它可能会对您有所帮助。 - amity
我在我的项目中使用了你的代码,但这并没有帮助到我。谢谢你的帮助。 - Dipak Keshariya

0
使用 Html.toHtml(Spanned 文本)

像这样:

String myString = Html.toHtml(cs);
System.out.println(myString);

编辑:我在这里摸索,但是你是否想要 Smillie 的文本(字符串)表示形式?

就像你有:

cs = Html.fromHtml(
            "<img src='"
                    + getResources()
                            .getDrawable(R.drawable.happy)
                    + "'/>", imageGetter, null);

你想要:

String cs = ":)";

是这样吗?如果不是,我的先前回答会给你提供技术上的字符串表示形式,以表示你的HTML代码。


这两行代码将以字符串格式输出以下内容:<p><img src="android.graphics.drawable.BitmapDrawable@44f324e8"></p> - Dipak Keshariya
你需要什么?请提供更多信息,你的问题不够清晰。 - Michele
我的问题是,我从编辑文本中获取图像并将其转换为字符串格式,然后将其传递到我的Facebook墙、Twitter状态、电子邮件和MMS。如果我使用您的代码,上述输出会显示出来。 - Dipak Keshariya
如果我使用“String cs =“ :)”;”,那么“:)”将被返回并传递到服务器。 - Dipak Keshariya
请编辑您的问题,添加更多信息,包括您目前拥有什么,您想要什么以及您想要实现什么。对我来说还不够清楚。 - Michele
如果我使用您编辑后的答案,那么只传递字符串值,也就是传递“:)”,而不是表情符号。 - Dipak Keshariya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接