2014-11-03 115 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); 
相關問題