Какие варианты у меня есть, чтобы показать части предложения с другим цветом? - PullRequest
2 голосов
/ 26 мая 2010

У меня более длинное предложение> 200 символов. Мне нужно показать на экране их части разного цвета, например, подсветку результатов поиска, каждый из которых имеет свой цвет. Текст должен автоматически переноситься по ширине экрана и не должен иметь разрывов между частями. Я имел в виду, что я могу поместить разделы на новую строку. Им придется продолжить предыдущий раздел, переносить его только при выключенном экране.

Лучше всего будет EditText, поскольку мне также нужно разрешить редактирование, но мне интересно, я могу изменить цвет различных частей предложения или просто в целом.

Как вы думаете, с помощью каких элементов пользовательского интерфейса я могу достичь этого представления?

Ответы [ 2 ]

6 голосов
/ 26 мая 2010

Есть более или менее два разных способа добиться этого:

1) Я думаю, официальным способом, используя Spannable:

http://developer.android.com/reference/android/text/Spannable.html

С помощью Spannable вы можете сделать что-то вроде этого:

Spannable spannable = (Spannable) yourTextView.getText();
spannable.setSpan(new BackgroundColorSpan(0xFF0000), startPosition, endPosition, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Существуют различные Spannables, такие как BackgroundColorSpan, которые я использовал в примере кода. Флаги объяснены здесь и в этом пакете вы можете найти различные возможности Spannable.

2) Гораздо более простой, но более или менее недокументированный способ - использовать теги HTML. Например, вы можете использовать такой код:

String textString ="<font color='#ff0000' > <b>hello</b> </font>"

yourTextView.setText(Html.fromHtml(textString)) 

Я не уверен, какие теги HTML поддерживаются. И я не знаю документации об этом, поэтому я думаю, что вы просто должны попробовать. Но по крайней мере жирный шрифт и цветной шрифт работают в коде, который я использую в своем приложении.

1 голос
/ 26 мая 2010

См. http://developer.android.com/reference/android/text/Spannable.html

Вы также можете использовать ограниченную html-подобную разметку в текстовых ресурсах, и в этом случае ресурс будет скомпилирован в Spannable. Теги , , , , , , , , , , , , , <имя аннотации => принимаются. Могут быть и другие, но если они не задокументированы, их, вероятно, небезопасно использовать. Смотрите StringBlock.java

Я не смог найти никакой официальной документации по классу Html, но строки документации в text / Html.java полезны. Класс кажется достаточно публичным. Спасибо, что указал на это, Себи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...