使用 ImageSpan 在 TextView 中添加多个微笑
Adding multiple smiles in TextView using ImageSpan
我正在尝试使用此代码在文本视图中添加多个微笑。
这是我的 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);
}
微笑添加得很好,但问题是当我添加很多微笑时无法放在一行中,然后第一行微笑变得不可见,它们从第二行开始。
这就是正在发生的事情。 Plz,有人帮助我。
您也可以在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
希望对您有所帮助。
解法:
在你的按钮中试试这个:
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的输入类型必须是textMultiline。
试一试,在我腿上工作,希望它对你也有帮助。
我正在尝试使用此代码在文本视图中添加多个微笑。
这是我的 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);
}
微笑添加得很好,但问题是当我添加很多微笑时无法放在一行中,然后第一行微笑变得不可见,它们从第二行开始。
您也可以在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
希望对您有所帮助。
解法:
在你的按钮中试试这个:
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的输入类型必须是textMultiline。
试一试,在我腿上工作,希望它对你也有帮助。