Nehmen wir an, ich mache einen Kommentar wie folgt:
Hallo Andrea, sieh dir das an ..... In diesem Kommentar möchte ich Andrea hervorheben, aber immer wenn ich den Wert von Andrea ändere oder wenn ich ein Zeichen des Wortes lösche, ändert sich der Bereich, das Problem ist, dass ich% co_de benutze %, welches spannableString.setSpan(new StyleSpan(Typeface.BOLD), indexOfAt, highlightName.length() + indexOfAt, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
akzeptiert Wörter in der Mitte und das Löschen von Wörtern, wie kann ich den Bereich entfernen, wenn der Benutzer das Wort ändert oder ein Zeichen des Wortes löscht?
Sie müssen auf Textänderungen im Bearbeitungstext achten.
Angenommen, die EditText
, die Sie verwenden, wird als commentEditText
Sie können TextWatcher dafür ausprobieren, fügen Sie einfach TextWatcher zu der Textansicht hinzu, die Sie oben erreichen möchten und in
%Vor%Wenn der Benutzer nun ein beliebiges Zeichen eingibt oder löscht, erhalten Sie bei dieser Methode einen Rückruf, sobald Sie den Bereich zurücksetzen können.
Wenn Sie SpannableString
verwenden, müssen Sie das Ganze bei jeder Änderung neu erstellen.
Sie können Bereiche entfernen, aber Sie können die Quelle (den Kommentar) nicht ändern, da SpannableString
Quelltext unveränderlich ist.
Ich schlage vor, bei jeder Änderung des Kommentars das SpannableString
zu erstellen, nach Namen zu suchen und diese zu markieren, und wenn sich der Kommentar ändert, wiederholst du dasselbe mit einem neuen SpannableString
. Es wird keine Leistungsprobleme geben, da die Kommentare klein sind.
Wenn Sie ein veränderbares Objekt haben wollen, können Sie SpannableStringBuilder
verwenden, aber es ist komplizierter und es ist nicht nötig.