Entfernen Sie den Bereich, wenn der Text innerhalb des Bereichs in Android geändert wird

9

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?

    
Andrea 13.08.2017, 21:30
quelle

3 Antworten

1

Sie müssen auf Textänderungen im Bearbeitungstext achten. Angenommen, die EditText , die Sie verwenden, wird als commentEditText

benannt %Vor%     
Farmaan Elahi 24.08.2017, 18:14
quelle
0

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.

    
Ankit Khare 22.08.2017 07:52
quelle
0

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.

    
MaanooAk 22.08.2017 08:56
quelle

Tags und Links