10
我有一個聊天應用程序,它提供了向文本添加表情符號的可能性。使用退格刪除整個Spannable
我與EditText
字段有問題。表情符號圖像顯示出來,但是如果我按下正常鍵盤上的退格按鈕,我將更改爲表情符號圖片的文本顯示出來,並且必須刪除多個字符,直到圖片消失。我正在使用Spannable
來做到這一點。
我想讓整個笑臉消失,如果用戶按下一次退格鍵。
下面的代碼我使用:
// This is in the keyclicked listener
{
...
smilie = "(angel)";
break;
...
int cursorPosition = content.getSelectionStart();
content.getText().insert(cursorPosition, getSmiledText(this, smilie));
content.getText().insert(cursorPosition + smilie.length(), " ");
}
public static boolean addSmiles(Context context, Spannable spannable) {
boolean hasChanges = false;
for (Entry<Pattern, Integer> entry : smilies.entrySet()) {
Matcher matcher = entry.getKey().matcher(spannable);
while (matcher.find()) {
boolean set = true;
for (ImageSpan span : spannable.getSpans(matcher.start(),
matcher.end(), ImageSpan.class))
if (spannable.getSpanStart(span) >= matcher.start()
&& spannable.getSpanEnd(span) <= matcher.end())
spannable.removeSpan(span);
else {
set = false;
break;
}
if (set) {
hasChanges = true;
spannable.setSpan(new ImageSpan(context, entry.getValue()),
matcher.start(), matcher.end(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
return hasChanges;
}
public static Spannable getSmiledText(Context context, CharSequence text) {
Spannable spannable = spannableFactory.newSpannable(text);
addSmiles(context, spannable);
return spannable;
}
關閉Cuff的EditText子類,覆蓋密鑰管理方法,並添加自己的表情符號邏輯,鏈接到所有其他場景的超類。 – CommonsWare
看到這個http://stackoverflow.com/questions/16876871/convert-drawable-to-a-specific-string/16881037#16881037 – pskink
嗨tobias。我面臨同樣的問題。你能解決這個問題嗎? –