How to Get Text and Smiley from Edittext into String?

后端 未结 2 761
失恋的感觉
失恋的感觉 2021-02-06 14:06

How to Get text and smiley from edittext into String?

Using Following Code I was Add Smiley/Emojis in Edittext but how to get text/smiley from edittext into String Forma

相关标签:
2条回答
  • 2021-02-06 14:36

    Use Html.toHtml(Spanned text)

    like:

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

    edit: iam digging in the dark here but could it be you want the text(string) representation of your Smillie?

    like you have:

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

    and you want:

    String cs = ":)";

    is that right? if not, my previous answer gives you the technical String representation of your Html code

    0 讨论(0)
  • 2021-02-06 14:39

    Please use following function.

    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).....};
    

    and settext using

    tv_msg_send.setText(getSmiledText(getApplicationContext(), edt_msg.getText().toString()));
    
    0 讨论(0)
提交回复
热议问题