【问题标题】:Adding multiple smiles in TextView using ImageSpan使用 ImageSpan 在 TextView 中添加多个微笑
【发布时间】:2019-03-04 03:09:14
【问题描述】:

我正在尝试使用此代码在 textview 中添加多个微笑。
这是我的 TextView。

<TextView
        android:id="@+id/textViewId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:bufferType="spannable" />

这是添加笑脸功能。

public void addSmily() {
        int resource  = R.drawable.smily ;

        Spannable spannable = Spannable.Factory.getInstance().newSpannable(" ");

        Drawable d = ContextCompat.getDrawable(this, resource);
        d.setBounds(0, 0, 40, 40);
        ImageSpan smilySpan = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);

        spannable.setSpan(smilySpan, spannable.length()-1, spannable.length(), 0);

        sendText.append(spannable);
}

微笑添加得很好,但问题是当我添加很多微笑时,一行中不适合,然后第一行微笑变得不可见,它们从第二行开始。

这就是正在发生的事情。拜托,有人帮帮我。

【问题讨论】:

  • 为什么要添加笑脸作为图像?您是否尝试将笑脸添加为 unicode?​​span>
  • 不,我没有尝试 Unicode
  • 请看下面的答案。

标签: android textview spannablestring spannable


【解决方案1】:

解决方案:

在你的按钮中试试这个:

SpannableString ss = new SpannableString("abc");

Drawable d = ContextCompat.getDrawable(your_activity.this, R.drawable.your_smiley_drawable);
d.setBounds(0, 0, 40, 40);
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

edittext.append(ss);

注意:另外,EditText 的 inputtype 必须是 textMultiline。

试试吧,在我的腿上工作,希望它对你也有帮助。

【讨论】:

  • 你能解释一下在 SpannableString 中使用“single space”和“abc”有什么区别吗?
  • 没有区别,双引号(“”)内的任何内容都被视为字符串,如果您给出单空格,您正在编写一个“空格字符”,它也将被视为细绳。 @MuhammadAsim 查看更多:developer.android.com/reference/android/text/SpannableString
【解决方案2】:

您还可以在 textview 中通过 unicode 设置笑脸。

how set emoji by unicode in a textview?

int unicode = 0x1F60A;

可以搭配使用

public String getEmojiByUnicode(int unicode){
    return new String(Character.toChars(unicode));
}

所以 Textview 显示 ? 没有 Drawable

试试http://apps.timwhitlock.info/emoji/tables/unicode

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多