Mam TextView
, którego szukam, aby umożliwić użytkownikowi wyszukiwanie dla określonego ciągu. Jeśli łańcuch zostanie znaleziony, powinien podświetlić. Używanie rozpiętości tła jest zbyt wolne i niezręczne, więc próbuję ustalić, czy mogę po prostu wybrać ciąg znaków. Wiem, że z EditText
byłoby to możliwe przy użyciu setSelection()
, ale nie chcę, aby użytkownik mógł edytować tekst, ale wciąż może ręcznie podświetlać tekst, co nie może sprawiać problemu z EditText
.Czy istnieje sposób programowego zaznaczania tekstu w widoku TextView?
Zgaduję, to jest albo albo; czy to jest możliwe, aby programowo wybrać tekst w postaci TextView
lub, aby umożliwić wybór tekstu bez możliwości edycji w postaci EditText
?
Uwaga: Używam niestandardowego widoku rozszerzającego TextView
, więc zakładam, że jest to albo rozszerzenie EditText
; Po prostu nie jestem pewien, który (jeśli którykolwiek) będzie działał.
możliwe byłoby zmienić kolor części napisu TextView. Po prostu użyj kodu HTML wokół części, aby oznaczyć i użyć HTML.fromHTML w swoim tekście setText. Lub możesz użyć obiektu Spannable. –
Tak, tak właśnie zrobiłem, ale jest powolny, ponieważ tekst jest duży. – yuttadhammo
"Korzystanie z rozpiętości tła jest zbyt wolne i niezręczne" - ummmm ... naprawdę? Nie widziałem z tym problemu. Za pomocą [tego przykładowego projektu] (https://github.com/commonsguy/cw-omnibus/tree/master/RichText/Search) mogę wyszukiwać wystąpienia podciągu w dłuższym ciągu, usuwając wszystkie istniejące 'BackgroundColorSpans' i zastosowanie nowego 'BackgroundColorSpans', w 20-30ms, w ~ 20 liniach kodu. "tekst jest duży" - jak duży? – CommonsWare