Android如何在一个文本编辑框中添加更多表情符号?

4

我需要在一个单独的编辑框中添加多个表情符号。要添加单个表情符号,我遵循此链接

如何在单个编辑框中添加更多表情符号?提前感谢。


您可以将图像导入编辑文本字段中。 - Manoj
2个回答

14

您可以在Spannable中添加尽可能多的ImageSpan。只需按照所链接代码所阐述的概念进行操作即可。您可能还希望使用SpannableStringBuilder

Drawable happySmiley = mContext.getResources().getDrawable(R.drawable.happy);
happySmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
Drawable sadSmiley = mContext.getResources().getDrawable(R.drawable.sad);
sadSmiley .setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());

SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append("Some text [happy_smiley_anchor]");
builder.setSpan(new ImageSpan(happySmiley), builder.length()-"[happy_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append(". Some more text [sad_smiley_anchor]");
builder.setSpan(new ImageSpan(sadSmiley), builder.length()-"[sad_smiley_anchor]".length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

edittext.setText(builder);

显然,您可以使用任何锚文本/字符 - 当插入ImageSpan时,它将被替换。甚至可能与空字符/字符串一起使用,但我没有尝试过。


在这个例子中,它使用imagespan对象替换了从开头到结尾的文本...你有没有想过如何将imagespan放置在光标所在的位置? - Shail Adi
1
@ShailAdi:你尝试过简单地设置ImageSpan的起始和结束位置(在文本插入符的位置)吗?或者,您可能需要先插入一个占位符字符。如果所有其他方法都失败了,只需在SO上发布一个新问题即可。 :) - MH.
@MH。是的...我尝试了相等的开头和结尾,但它根本没有放置图像...开始使用占位符字符。谢谢 :) - Shail Adi

1

您可以在Spannable中添加任意数量的ImageSpans,只需按照您链接的代码所提供的概念即可。您可能还想使用SpannableStringBuilder

SpannableStringBuilder ssb = new SpannableStringBuilder("Some Text"); 
Bitmap image1 = BitmapFactory.decodeResource( getResources(), R.drawable.yourimage1 ); 
Bitmap image2 = BitmapFactory.decodeResource( getResources(), R.drawable.yourimage1 ); ssb.setSpan( new ImageSpan( image1 ), 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
ssb.setSpan( new ImageSpan( image2 ), 2,3, Spannable.SPAN_INCLUSIVE_INCLUSIVE ); 
deleteButton.setText( ssb, BufferType.SPANNABLE );

我尝试了上面的代码,它运行良好。我在一个文本视图中添加了两个图像跨度,同样地,您可以向textview中添加任意数量的图像跨度。


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