Tôi có một ứng dụng trò chuyện cung cấp khả năng thêm biểu tượng cảm xúc vào văn bản.Xóa toàn bộ Spannable bằng backspace
Tôi gặp sự cố với trường EditText
. Các hình ảnh biểu tượng cảm xúc xuất hiện nhưng nếu tôi nhấn trên bàn phím bình thường nút backspace, văn bản mà tôi đã thay đổi thành một hình ảnh biểu tượng cảm xúc xuất hiện và tôi phải xóa vài ký tự cho đến khi hình ảnh biến mất. Tôi đang sử dụng Spannable
để thực hiện việc này.
Tôi muốn toàn bộ smilie biến mất nếu người dùng nhấn một lần backspace.
Dưới đây là đoạn code tôi đang sử dụng:
// 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;
}
Tắt vòng bít, phân lớp 'EditText', ghi đè lên các phương thức quản lý khóa và thêm vào logic backspace-on-an-emoticon của riêng bạn, nối chuỗi vào siêu lớp cho tất cả các trường hợp khác. – CommonsWare
xem http://stackoverflow.com/questions/16876871/convert-drawable-to-a-specific-string/16881037#16881037 – pskink
Hi tobias này. Tôi đang phải đối mặt với vấn đề tương tự. Bạn có thể giải quyết điều đó không? –