Ich habe eine Chat-Anwendung, die die Möglichkeit bietet, Emoticons zum Text hinzuzufügen.Entferne ganze Spannbare mit Rücktaste
Ich habe ein Problem mit dem EditText
Feld. Die Emoticon-Bilder erscheinen, aber wenn ich auf die normale Tastatur die Rücktaste drücke, erscheint der Text, den ich in ein Emoticons-Bild geändert habe, und ich muss mehrere Zeichen entfernen, bis das Bild verschwindet. Ich benutze Spannable
um dies zu tun.
Ich möchte das ganze Smilie weggehen, wenn der Benutzer einmal Backspace drückt.
Hier ist der Code Ich verwende:
// 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;
}
Aus der Hand, Unterklasse 'EditText', überschreiben Sie die Schlüsselverwaltungsmethoden und fügen Sie Ihre eigene Backspace-on-Emoticon-Logik hinzu, die an die Oberklasse für alle anderen Szenarien gekoppelt wird. – CommonsWare
siehe diese http://stackoverflow.com/questions/16876871/convert-drawable-to-a-specific-string/16881037#16881037 – pskink
Hallo Tobias. Ich stehe vor demselben Problem. Könntest du das lösen? –