Android在一个edittext中添加更多表情符号?

时间:2012-02-18 10:05:44

标签: android

我需要在一个edittext框中添加多个表情符号。为了添加一个笑脸,我按照this link

如何在单个Edittext框中添加更多表情符号?提前谢谢..

2 个答案:

答案 0 :(得分:14)

您可以根据需要将ImageSpan添加到Spannable。只需遵循您链接的代码所规定的概念即可。您可能也想使用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时它会被替换。它甚至可以使用空的字符/字符串,但我没有尝试过。

答案 1 :(得分:1)

您可以根据需要向ImageSpans添加SpannableSpannableStringBuilder。只需遵循您链接的代码所规定的概念即可。您可能也想使用textview

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

我尝试了上面的代码,它工作正常。我在一个文本视图中添加了两个图像跨度,同样可以向{{1}}添加尽可能多的图像跨度。