Выделение текста в TextView на Android - PullRequest
1 голос
/ 25 октября 2011

Вероятно, это просто вопрос идеи. У меня есть много textViews в одном ScrollLayout (так скажем, только половина из них отображаются в один момент на экране). Затем у меня есть editText, и я думаю о том, как выделить и прокрутить до textView, который содержит то же значение строки, что и пользователь, написанный в editText. Например:

editText.text = "Test"
textView.text = "Testing Issue"
textView2.text = "Bla Bla"

Я хочу выделить текстовое представление части / полного (не имеет значения) соответствующим текстовым значением.

Большое спасибо заранее и извините, если мой вопрос хромает :), поскольку я новичок в Android.

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

В этом случае я бы рекомендовал использовать ListView и иметь отдельную строку для каждого сегмента текста, который у вас есть.

Вы присваиваете TextWatcher для EditText, он имеет обратный вызов, который вызывается после каждой буквынабрал. В этом обратном вызове вы выполняете поиск введенной строки (возможно, асинхронно) и возвращаете позиции строк, которые содержат указанную подстроку.

Теперь прокрутите ListView до первого появления,Вы можете использовать его метод .smoothScrollToPosition ().

Что касается основных моментов, вы, вероятно, просматриваете тексты в строках, используя виджеты TextView.Вы можете установить текст, который просматривается внутри них, с помощью .setText (), которая также принимает Spannable / Spanned объекты.Это строки на стероидах, вы можете назначить интервалы стилей для разных областей строк.Таким образом, вы можете использовать это, например, для отображения найденной подстроки в другом цвете / фоне / и т. Д.

Или использовать HTML.Html.fromHtml () фактически обрабатывает теги html в предоставленных строках в объектах Spannable, поэтому с ними может быть проще работать:)

2 голосов
/ 25 октября 2011

Если вы говорите о том, чтобы какой-то текст выглядел по-разному в одном и том же текстовом представлении, то вы можете выделить конкретный текст жирным шрифтом или что-то другое, например:

textView.setText(HTML.fromHtml("Testing" + "<b>Issue</b>"));
0 голосов
/ 25 октября 2011

создайте стиль в качестве ресурса, затем, когда пользователь вводит текст и нажимает кнопку "Отправить", ищите все текстовые поля с соответствующим текстом и применяйте к ним ресурс стиля, чтобы он выделялся

...