在聊天中显示表情符号
问题描述:
嗨我试图在我的聊天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.-如何显示图像?
答
首先,您在字符串中插入[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);