Ich habe eine TextView
, die ich suche, um dem Benutzer zu ermöglichen, nach einer bestimmten Zeichenfolge zu suchen. Wenn die Zeichenfolge gefunden wird, sollte sie hervorgehoben werden. Die Verwendung einer Hintergrundspanne ist zu langsam und unpraktisch, also versuche ich herauszufinden, ob ich die Saite auswählen kann. Ich weiß, mit EditText
wäre dies möglich mit setSelection()
, aber ich möchte nicht der Benutzer in der Lage sein, den Text zu bearbeiten, während immer noch in der Lage, Text manuell hervorzuheben, die ich nicht mit einer EditText
verwalten kann.Gibt es eine Möglichkeit, Text in einem TextView programmatisch auszuwählen?
Ich denke, dann ist es entweder oder; ist es entweder möglich, programmatisch Text in einem TextView
oder möglichen Textauswahl auswählen, ohne Bearbeitung in einem EditText
?
Hinweis: Ich benutze tatsächlich eine benutzerdefinierte Ansicht erweitert TextView
, so nehme ich an, dass es entweder das ist oder erweitern EditText
; Ich bin mir einfach nicht sicher, welches (wenn) auch funktionieren wird.
Es wäre möglich, die Farbe eines Teils des Textview-String. Verwenden Sie einfach HTML um das Teil, um HTML.fromHTML in Ihrem setText zu markieren und zu verwenden. Oder Sie könnten ein spannbares Objekt verwenden. –
Ja, das habe ich ursprünglich gemacht, aber es ist langsam, weil der Text groß ist. – yuttadhammo
"Eine Hintergrundspanne ist zu langsam und umständlich" - ummmmm ... wirklich? Ich habe damit kein Problem gesehen. Mit [diesem Beispielprojekt] (https://github.com/commonsguy/cw-omnibus/tree/master/RichText/Search) kann ich nach Vorkommen eines Teilstrings in einem längeren String suchen, wobei alle vorhandenen "BackgroundColorSpans" und Anwendung neuer 'BackgroundColorSpans' in 20-30ms in ~ 20 Zeilen Code. "Der Text ist groß" - wie groß? – CommonsWare