W XML możemy ustawić kolor tekstu za pomocą textColor
atrybutu, np android:textColor="#FF0000"
. Ale jak to zmienić, kodując?
Próbowałem czegoś takiego:
holder.text.setTextColor(R.color.Red);
Gdzie holder
jest tylko klasa i text
jest typu TextView
. Kolor czerwony to wartość RGB (# FF0000) ustawiona w ciągach znaków.
Ale pokazuje inny kolor niż czerwony. Jaki parametr możemy przekazać w setTextColor ()? W dokumentacji jest napisane int
, ale czy jest to wartość odniesienia zasobu czy coś jeszcze?
Odpowiedzi:
Powinieneś użyć:
Możesz
Color
oczywiście użyć różnych funkcji z klasy, aby uzyskać ten sam efekt.Color.parseColor
(Ręcznie) (podobnie jak w LEX)Color.rgb
iColor.argb
( Manual rgb ) ( Manual argb ) (podobnie jak Ganapathy)I oczywiście, jeśli chcesz zdefiniować kolor w
XML
pliku, możesz to zrobić:ponieważ
getColor()
funkcja jest przestarzała 1 , musisz jej używać w następujący sposób:Możesz także wstawić zwykły HEX, np .:
Tam, gdzie najpierw jest kanał alfa, potem wartość koloru.
Sprawdź całą instrukcję oczywiście, klasa publiczna Kolor rozszerza obiekt .
1 Ten kod również tu był:
Ta metoda jest teraz przestarzała w Androidzie M. Możesz jednak użyć jej z kontekstuKompat w bibliotece obsługi , jak pokazano w przykładzie.
źródło
getColor(int)
jest przestarzałe.Jeśli nadal chcesz określić kolory w pliku XML:
Następnie odwołaj się do niego w kodzie za pomocą jednej z tych dwóch metod:
lub
Pierwszy jest prawdopodobnie preferowany, jeśli kompilujesz na Androidzie M, jednak motyw, który przekazujesz, może być zerowy, więc może to jest dla ciebie łatwiejsze?
A jeśli korzystasz z biblioteki Compat, możesz zrobić coś takiego
źródło
getColor(int)
jest przestarzałe.ContextCompat.getColor(getContext(), R.color.yourColor);
wydaje się być zamiennikiem.I kolejny:
źródło
getResources()
jest funkcją członka kontekstu. W przypadku adapterów użyjgetContext().getResources()
. Wartości kolorów powinny trafić do zasobów, jak w odpowiedzi @ xbakesx.Możesz to zrobić tylko z pliku XML.
Utwórz
color.xml
plik w folderze wartości:Następnie w dowolnym pliku XML możesz ustawić kolor tekstu za pomocą,
Lub możesz użyć tego koloru w pliku Java:
źródło
Możesz użyć
Możesz także określić pożądany kolor za pomocą opcji Przezroczystość.
a dla wartości alfa (przezroczystej) r-czerwony g-zielony b-niebieski
źródło
użyj następującego kodu w layout.xml
źródło
Istnieje wiele różnych sposobów ustawiania koloru w widoku tekstu.
Dodaj wartość koloru w studio res-> wartości-> colors.xml as
Teraz ustaw kolor w klasie xml lub actvity jako
Jeśli chcesz podać kod koloru, użyj poniższego kodu Color.parseColor
Możesz także użyć RGB
Użyj może również użyć bezpośredniego kodu szesnastkowego dla textView. Możesz także wstawić zwykły HEX, np .:
Możesz także użyć argb z wartościami alfa.
a dla Alpha (przezroczysty) v.
A jeśli korzystasz z biblioteki Compat, możesz zrobić coś takiego
źródło
Zwykle robię to dla dowolnych widoków:
gdzie
AA definiuje alfa (00 dla przezroczystych, FF dla nieprzezroczystych)
RRGGBB definiuje normalny kod koloru HTML (jak FF0000 dla czerwonego).
źródło
Jeśli planujesz użyć setTextAppearance , powinieneś wiedzieć, że zastąpi kolor tekstu stylem odziedziczonym z motywu. Więc jeśli chcesz używać obu, ustaw kolor później .
To działa:
Chociaż spowoduje to, że kolor tekstu będzie na przykład biały (dla ciemnego motywu) lub czarny (dla jasnego motywu):
W przeciwieństwie do tego w XML kolejność jest dowolna.
źródło
W
colors.xml
pliku wpisz poniższy kod:źródło
Uważam, że jeśli chcesz określić kolor jako zasób (w pliku XML ), musisz podać jego wartość ARGB (nie tylko wartość RGB).
Spróbuj zmienić wartość koloru na
#FFFF0000
. Powinien dać ci CZERWONY.źródło
text.setTextColor(getResource().getColor(R.color.black))
masz kolor czarny w color.xml.LUB
text.setTextColor(Color.parseColor("#000000"))
tutaj wpisz żądany kod szesnastkowyLUB
text.setTextColor(Color.BLACK)
możesz użyć statycznych pól kolorówźródło
Posługiwać się:
źródło
lub
źródło
Za pomocą adaptera możesz ustawić kolor tekstu za pomocą tego kodu:
źródło
Powyższy kod działa po mojej stronie. Tutaj
text
jest TextView na których konieczna jest koloru należy ustawić.źródło
źródło
Począwszy od API 23,
getResources().getColor()
jest przestarzały.Zamiast tego użyj tego:
źródło
źródło
W adapterze możesz ustawić kolor tekstu za pomocą tego kodu:
źródło
jeśli chcesz podać kod koloru bezpośrednio, użyj
lub jeśli chcesz podać kod koloru z folderu kolorów, użyj
źródło
Aby ustawić kolor TextView,
TextView.setTextColor(R.color.YOURCOLOR)
nie wystarczy!Należy go używać w ten sposób -
LUB
źródło
źródło
Podobnie użyłem
color.xml
:Aby ustawić
TextView
tło, takie jak:Otrzymywałem inny kolor, ale kiedy użyłem poniższego kodu, otrzymałem właściwy kolor.
źródło
Zrobiłem to w następujący sposób: Utwórz plik XML o nazwie Kolory w folderze res / values.
Moje kolory.xml:
Aby uzyskać te kolory z pliku xml, użyłem tego kodu: valor to TextView, a ctx to obiekt Context. Nie używam go z działania, ale BaseAdapter do ListView. Dlatego użyłem tego obiektu kontekstowego.
Mam nadzieję, że to pomoże.
źródło
Aby podać wartości rgb:
text.setTextColor(Color.rgb(200,0,0));
Aby parsować kolor z wartości szesnastkowej:
text.setTextColor(Color.parseColor("#FFFFFF"));
źródło
Jeśli korzystasz z adaptera i nadal chcesz używać koloru zdefiniowanego w zasobach, możesz wypróbować następujące podejście:
źródło
źródło
Metoda getColor () jest przestarzała
Spróbuj więc w ten sposób:
źródło
Robiłem to dla TextView w ViewHolder dla RecyclerView. Nie jestem pewien, dlaczego, ale nie działało to dla mnie podczas inicjalizacji ViewHolder.
Ale kiedy przeniosłem go do onBindViewHolder, działało dobrze.
Mam nadzieję, że to komuś pomoże.
źródło