Я ищу способ изменить цвет текста одного слова в a TextView
изнутри Activity
.
Например, вот так:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Как мне изменить цвет next
текста на красный?
Ответы:
Самый простой способ, который я знаю, - это просто использовать html.
Но для этого вам потребуется перестроить TextView, когда (если?) Вы захотите изменить цвет, что может вызвать проблемы.
источник
fromHtml
сейчас устарелоHtml.fromHtml
устарела. Это решение сработало для меня!вы должны использовать spannable, это также позволит вам увеличить размер текста, сделать его жирным и т. д. ... даже вставить какое-то изображение.
источник
SpannableString
объект, используяTextFormatted
свойство вашего элемента управления.java.lang.String cannot be cast to android.text.Spannable
ошибку.Используйте SpannableStringBuilder следующим образом:
источник
new ForegroundColorSpan(Color)
чтобы текст сохранил исходный цвет по умолчанию?для длинной строки вы можете использовать это:
источник
Если вы хотите изменить состояние всех экземпляров определенного
String
внутриTextView
текста (без учета регистра), вы можете использоватьStringBuilder
s иSpannableString
вот так:}
TextView
текст внутриStringBuilder
.StringBuilder
.TextView
текст внутриSpannableString
String
экземпляры внутриTextView
текста и изменить их при достижении.TextView
дляSpannableString
.источник
Я реализовал служебную функцию в Kotlin для своего собственного использования и, возможно, полезен для кого-то еще.
Как я его использую:
источник
ИСПОЛЬЗОВАНИЕ:
Функция:
источник
Я думаю, что это более читабельно для раскраски слова в строке, это также, вероятно, немного более эффективно, потому что вы пишете один раз
источник