Szukam sposobu, aby zmienić kolor tekstu pojedynczego słowa w a TextView
od wewnątrz Activity
.
Na przykład z tym:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Jak zmienić kolor next
tekstu na czerwony?
Odpowiedzi:
Najłatwiejszy sposób, jaki znam, to po prostu użycie html.
Ale będzie to wymagało przebudowania TextView, gdy (jeśli?) Chcesz zmienić kolor, co może spowodować kłopoty.
źródło
fromHtml
jest teraz przestarzałeHtml.fromHtml
jest przestarzałe. To rozwiązanie zadziałało dla mnie!musisz użyć spannable, co pozwoli ci również zwiększyć rozmiar tekstu, pogrubić go itp. ... nawet wstawić obraz.
źródło
SpannableString
obiekt za pomocąTextFormatted
właściwości kontrolki.java.lang.String cannot be cast to android.text.Spannable
błąd.Użyj SpannableStringBuilder w ten sposób:
źródło
new ForegroundColorSpan(Color)
aby tekst zachował oryginalny, domyślny kolor?dla długich ciągów możesz użyć tego:
źródło
Jeśli chcesz zmienić stan wszystkich wystąpień określonego
String
wTextView
tekście (bez rozróżniania wielkości liter), możesz użyćStringBuilder
s iSpannableString
tak:}
TextView
tekst w plikuStringBuilder
.StringBuilder
.TextView
tekst w plikuSpannableString
String
wystąpienia wTextView
tekście i zmienić je po osiągnięciu.TextView
naSpannableString
.źródło
Zaimplementowałem funkcję narzędziową w Kotlinie na własny użytek i może być przydatna dla kogoś innego.
Jak go używam:
źródło
POSŁUGIWAĆ SIĘ:
Funkcjonować:
źródło
Myślę, że jest to bardziej czytelne w przypadku kolorowania słowa w ciągu, ale jest też prawdopodobnie bardziej wydajne, ponieważ piszesz raz
źródło