text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Chcę zmienić kolor CepVizyon.getPhoneCode()
sznurka. W jaki sposób mogę to zrobić?
android
uitextview
textview
atasoyh
źródło
źródło
Odpowiedzi:
Spannable jest bardziej elastyczny:
źródło
()
potext.length
colength
to nie metoda polu. Zrobiłbym to sam, ale zmiany muszą mieć co najmniej 6 znaków :)Html.fromHtml(R.id.your_html_string);
źródło
Jeśli masz tekst statyczny, który wymaga koloru, możesz dodać go bez żadnego kodu za pośrednictwem pliku ciągów:
następnie
wynik
nie jestem pewien, w których wersjach API to działa, ale nie działa dla API 19, które do tej pory testowałem, więc prawdopodobnie tylko niektóre z najnowszych wersji API obsługują to
edycja: jak @hairraisin wspomniano w komentarzach, spróbuj użyć
fgcolor
zamiastcolor
koloru czcionki, wtedy powinno działać na niższych poziomach API, ale dla pewności potrzeba więcej testówźródło
<font fgcolor=...
API 15 i API 25 (nie testowałem jednak specjalnie 19)Jeśli chodzi o odpowiedź Maneesha, to zadziała, ale musisz dodać cudzysłowy do atrybutu koloru i uciec od nich.
źródło
To jest dla mnie dobre!
źródło
Oto
colorize
funkcja oparta na odpowiedzi andyboot:źródło
Tutaj rozwiązanie w Kotlinie, które używa
SpannableString
do zmiany koloru części sznurka.źródło
Nie podobał mi się pomysł robienia tego za pomocą kodu za każdym razem, gdy chcę pokolorować części tekstu, które często robiłem we wszystkich moich aplikacjach (a ponieważ w niektórych przypadkach tekst jest ustawiany w czasie wykonywania za pomocą różnych elementów w wierszu) zdefiniowane kolory), więc stworzyłem własne
MarkableTextView
.Pomysł polegał na:
Oto proces krok po kroku:
Najpierw potrzebowałem sposobu na znalezienie tagów XML w podanym ciągu i
Regex
załatwiłem sprawę.Aby powyższe było zgodne ze znacznikiem XML, musi mieć następujące kryteria:
<a>
<a >
<a-a>
<a ..attrs..>
ale nie< a>
<1>
<a></a>
ale nie<a></b>
Teraz dla atrybutów, których użyjemy tego ...
Ma tę samą koncepcję i generalnie nie musiałem iść daleko w obu przypadkach, ponieważ kompilator zajmie się resztą, jeśli coś wyjdzie poza format.
Teraz potrzebujemy klasy, która może przechowywać wyodrębnione dane:
Przede wszystkim dodamy ten fajny iterator, którego używam od dawna do zapętlania dopasowań (nie pamiętam autora) :
MarkableTextView:
Na koniec stylizacja, więc oto bardzo prosta stylizacja, którą stworzyłem dla tej odpowiedzi:
A tak wygląda
Markable
klasa zawierająca definicje:Wszystko, czego teraz potrzebujemy, to odwołać się do ciągu i zasadniczo powinien wyglądać tak:
Pamiętaj, aby owinąć tagi znakiem
CDATA Section
i uciekać za"
pomocą\
.Stworzyłem to jako rozwiązanie modułowe do przetwarzania części tekstu na różne sposoby bez potrzeby wrzucania niepotrzebnego kodu.
źródło
Zrobiłem tak, jak powiedział Andy Boot, ale miałem również klikalny zakres i nie zadziałało, ponieważ kolejność
setSpans
została wywołana. Musisz więc najpierw wywołać, aspannable.setSpan(clickableSpanand...
następnie the,spannable.setSpan(new ForegroundColorSpan...
aby uzyskać kolor w TextViewźródło
Zrobiłem tę małą funkcję, po prostu przekaż swój tekst do koloru, indeksy początku i końca tego, co chcesz pokolorować tego tekstu i sam kolor
Kotlin
Stosowanie
źródło
Z funkcją rozszerzenia Kotlin ogólnego przeznaczenia wyglądałoby to tak:
źródło
Użyj znaków ucieczki + Html.fromHtml ()
Jak przechowywać ciąg w folderze zasobów ciągu
Jak pokazać w TextView?
Premia:
String w danych wyjściowych wygląda następująco
źródło
Zainspirowany powyższą odpowiedzią Alejandro H. Cruz .
Jego funkcja działa tylko dla pojedynczego dopasowania podłańcucha, zaktualizowałem jego metodę, aby używała Regex i powinienem zaktualizować kolory we wszystkich dopasowaniach:
źródło
Jednym ze sposobów jest podzielenie
myTextView
na kilka oddzielnychTextViews
, z których jeden byłby przeznaczony tylko na kod telefonu. Wtedy kontrolowanie koloru tego konkretnegoTextView
jest całkiem proste.źródło