#android
#Android
Вопрос:
Я видел все вокруг stackoverflow для использования
setText(html.fromHtml("<font color="#c5c5c5">Hello</font>"))
Однако ни один из них не работает для Android <23
вот пример кода:
TextView mTextView = new TextView(context);
mTextView.setText(Html.fromHtml("<p style="color:red;">Test</p>"));
Это устанавливает цвет шрифта в> 23. Есть ли какие-либо альтернативы, которые работают для < 23? или это ошибка со следующей зависимостью?
implementation 'androidx.appcompat:appcompat:1.1.0'
Еще немного информации: я тестирую изображение Lolipop x86
Ответ №1:
Нет необходимости в HTML, просто используйте промежутки.
Spannable text = new SpannableString("hello");
text.setSpan(new ForegroundColorSpan(Color.RED), 0, text.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
mTextView.setText(text);
Если вы используете appcompat, вы, вероятно, захотите new AppCompatTextView(context)
, а не просто new TextView(context)
.
Комментарии:
1. Спасибо, это работает, но проблема в том, что у меня длинная строка, и я хочу установить разные цвета для разных слов неизвестного размера. есть хороший способ сделать это? с Html это сделать намного проще
2. @Android Вы можете звонить
setSpan
в разные регионы,setSpan(redSpan, words[0], words[1], flags); setSpan(greenSpan, words[1], words[2], flags); // etc.
Ответ №2:
используйте следующее
setText(Html.fromHtml("<![CDATA[<font color='#c5c5c5'>Hello</font>]]>"));
для XML-макета не забудьте добавить
android:textAllCaps="true"