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);
4

2 に答える 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;
        }

次の感情コード...

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()));
于 2011-09-19T11:41:29.080 に答える
0

Html.toHtml(スパン テキスト)を使用する

お気に入り:

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

編集: ここで暗闇を掘り下げていますが、Smillie のテキスト (文字列) 表現が必要でしょうか?

あなたが持っているように:

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

そしてあなたが望む:

文字列 cs = ":)";

そうですか?そうでない場合は、以前の回答で Html コードの技術的な文字列表現が得られます

于 2011-09-13T06:18:46.643 に答える