2014-11-03 87 views
1

嗨我试图在我的聊天xmpp应用中实现表情符号。在聊天中显示表情符号

这是我的代码来获得表情在我的EditText

private OnClickListener emoclic = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

    Drawable happySmiley = getActivity().getResources().getDrawable(R.drawable.emo2); 
      happySmiley .setBounds(0, 0, 22,22); 
    SpannableStringBuilder builder = new SpannableStringBuilder(); 
          builder.append("[emo2_anchor]"); 
          builder.setSpan(new ImageSpan(happySmiley), builder.length()-"     
          [hotel2_anchor]".length(), 
          builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    chatMsg.getText().append(builder); 
     } 

    }; 

但这样做的结果是

“喜!!! [emo2_anchor]”

我的问题是:

1.- W hy [emo2_anchor]正在显示?

2.-如何显示图像?

回答

1

首先,您在字符串中插入[emo2_anchor],但使用[hotel2_anchor]作为长度。

其次,您必须检查Spannable.SPAN_EXCLUSIVE_EXCLUSIVE是否与您使用的字符索引匹配,或者您是否有错误的错误。

第三,您不必使用自己的占位符和替换图像。您可以让用户像平常一样输入表情符号(例如,从他们的软件键盘),并在字符串中包含Unicode代码点。 Android 4.1.1中的内置emoji字体将处理渲染。如果你需要支持每个API级别,this library可以帮助你。

无论如何,请尝试以下行来代替:

SpannableStringBuilder builder = new SpannableStringBuilder(); 
String placeholder = "[emo2_anchor]"; 
String myText = chatMsg.getText().toString()+" "+placeholder; 
builder.append(myText); 
builder.setSpan(new ImageSpan(happySmiley), myText.indexOf(placeholder), myText.indexOf(placeholder)+placeholder.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
chatMsg.setText(builder); 
相关问题