Jak ustawić kolor tekstu TextView w kodzie?

W XML możemy ustawić kolor tekstu za pomocą atrybutu textColor, np. android:textColor="#FF0000". Ale jak Mogę to zmienić poprzez kodowanie?

Próbowałem czegoś takiego:

holder.text.setTextColor(R.color.Red);

Gdzie holder jest tylko klasą, A text jest typu TextView. Czerwony jest wartością RGB (#ff0000) ustawioną w łańcuchach.

Ale pokazuje inny kolor niż czerwony. Jaki parametr możemy przekazać w settextcolor ()? W dokumentacji jest napisane int, ale czy jest to wartość referencyjna zasobów, czy cokolwiek innego?

Author: Peter Mortensen, 2011-01-05

30 answers

Powinieneś użyć:

holder.text.setTextColor(Color.RED);

Dla sprawdzenia zdrowia psychicznego, właśnie próbowałem, bo i tak miałem otwarty projekt i tak, jest ładny i czerwony; d


Możesz używać różnych funkcji z klasy Color, aby oczywiście uzyskać ten sam efekt.

  • Color.parseColor (Manual) (Jak używa LEX)

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgb oraz Color.argb (ręczne rgb) (Manual argb ) (Jak używa Ganapathy)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • I oczywiście, jeśli chcesz zdefiniować swój kolor w pliku XML, możesz to zrobić:

    <color name="errorColor">#f00</color>
    

    Ponieważ funkcja getColor() jest przestarzała1, musisz go używać w ten sposób:

    ContextCompat.getColor(context, R.color.your_color);
    
  • Możesz również wstawić zwykły HEX, tak:

    myTextView.setTextColor(0xAARRGGBB);
    

    Gdzie najpierw masz kanał alfa, potem wartość koloru.

Zapoznaj się z kompletnym podręcznikiem oczywiście, Klasa publiczna Color rozszerza obiekt.


1kod ten użyty być tu też:

textView.setTextColor(getResources().getColor(R.color.errorColor));

Ta metoda jest obecnie przestarzała w systemie Android M. można jej jednak używać z contextCompat w bibliotece wsparcia , Jak pokazuje teraz przykład.

 1086
Author: Nanne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:22

Jeśli nadal chcesz określić kolory w pliku XML:

<color name="errorColor">#f00</color>

Następnie odwołaj się do niego w swoim kodzie za pomocą jednej z tych dwóch metod:

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));    

Lub

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

Pierwszy jest prawdopodobnie lepszy, jeśli kompilujesz z Androidem M, jednak motyw, który przekazujesz, może być null, więc może to dla ciebie łatwiejsze?

A jeśli korzystasz z biblioteki Compat, możesz zrobić coś takiego

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
 130
Author: xbakesx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-07 18:21:51

I jeszcze jeden:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
 42
Author: LEX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:37:27

Możesz to zrobić tylko z pliku XML.

Utwórz plik color.xml w folderze values:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

Następnie w dowolnym pliku XML można ustawić kolor tekstu za pomocą

android:textColor="@color/textbody"

Lub możesz użyć tego koloru w pliku Java:

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
 35
Author: newday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:38:30

Możesz użyć

holder.text.setTextColor(Color.rgb(200,0,0));

Możesz również określić, jaki kolor chcesz za pomocą przezroczystości.

holder.text.setTextColor(Color.argb(0,200,0,0));

A Dla Alfa (przezroczysty) wartość r-czerwony G-zielony b-niebieski

 25
Author: Ganapathy C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 18:31:42

Użyj poniższego kodu w układzie.xml

<TextView  android:id="@+id/textView1"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content" 
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="16dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#25383C"
        android:textSize="13sp" />
 11
Author: Chinna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-09 14:09:48

Istnieje wiele różnych sposobów ustawiania koloru w widoku tekstu.

  1. Dodaj wartość koloru w studio res->wartości->kolory.xml as

    <color name="color_purple">#800080</color>
    

    Teraz ustaw kolor w klasie XML lub actvity jako

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. Jeśli chcesz podać kod koloru bezpośrednio użyj poniższego koloru.kod parseColor

    textView.setTextColor(Color.parseColor("#ffffff"));   
    
  3. Możesz również użyć RGB

    text.setTextColor(Color.rgb(200,0,0));
    
  4. Use może również używać bezpośredniego kodu heksagonalnego dla textView. Można również wstawić zwykły HEX, jak więc:

    text.setTextColor(0xAARRGGBB);
    
  5. Możesz również użyć argb z wartościami Alfa.

       text.setTextColor(Color.argb(0,200,0,0));
    

    A Dla Alfa (przezroczysty) v.

  6. A jeśli korzystasz z biblioteki Compat, możesz zrobić coś takiego

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
 11
Author: Rank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 02:36:43

Normalnie robię to dla dowolnych widoków:

myTextView.setTextColor(0xAARRGGBB);

Gdzie

  • AA definiuje alpha (00 dla przezroczystości, FF dla nieprzezroczystości)

  • RRGGBB definiuje normalny kod koloru HTML (jak ff0000 Dla red).

 8
Author: A.W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:38:59

Jeśli planujesz użyć setTextAppearance powinieneś wiedzieć, że nadpisze kolor tekstu stylem odziedziczonym z motywu. Więc jeśli chcesz użyć obu, ustaw kolor Później .

To działa:

textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);

Podczas gdy spowoduje to, że Twój textcolor będzie np. biały (dla ciemnego motywu) lub czarny (dla jasnego motywu):

textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

W przeciwieństwie do tego w XML kolejność jest dowolna.

 7
Author: Robin Gawenda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-10 10:09:45

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. Powinno dać ci czerwony.

 5
Author: Arnab Chakraborty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:46:03

Użycie:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
 4
Author: Talha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:46:26
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

W pliku colors.xml wpisz poniższy kod:

<color name="colorWhite">#FFFFFF</color>
 4
Author: Kaushik Chatterjee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 19:38:07
holder.text.setTextColor(Color.rgb(200,0,0));

Lub

myTextView.setTextColor(0xAARRGGBB);
 4
Author: Yash Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 01:17:14

Za Pomocą Adaptera można ustawić kolor tekstu za pomocą tego kodu:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
 3
Author: Hiren Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:39:55
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

Powyższy kod działa po mojej stronie. Tutaj text jest TextView , na którym należy ustawić kolor.

 3
Author: Evon Technology,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-24 13:31:44
text1.setTextColor(Color.parseColor("#000000"));
 3
Author: Ravina Bhavsar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 01:16:55

text.setTextColor(getResource().getColor(R.color.black)) masz utworzyć czarny kolor w Kolorze.xml.

Lub

text.setTextColor(Color.parseColor("#000000")) Tutaj wpisz żądany hexcode

Lub

text.setTextColor(Color.BLACK) możesz używać statycznych pól kolorów

 2
Author: Nitish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-30 10:09:41
   textViewStatus.setTextColor(res.getColor(R.color.green));
 1
Author: zudo1337,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-29 10:45:39

W adapterze można ustawić kolor tekstu za pomocą tego kodu:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
 1
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:39:21

Jeśli chcesz podać kod koloru bezpośrednio, użyj

textView.setTextColor(Color.parseColor("#ffffff"));

Lub jeśli chcesz podać kod koloru z folderu kolory to Użyj

textView.setTextColor(R.color.white);
 1
Author: reshma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 07:05:07

Aby ustawić kolor widoku tekstowego, TextView.setTextColor(R.color.YOURCOLOR) nie wystarczy!

To musi być używane w ten sposób –

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);

Lub

myText.setTextColor(Color.parseColor("#54D66A"));
 1
Author: IntelliJ Amiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-19 09:10:55
holder.userType.setTextColor(context.getResources().getColor(
                    R.color.green));
 1
Author: Harish Gyanani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 11:13:21

Od API 23, {[1] } jest przestarzałe.

Użyj tego zamiast:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
 1
Author: PJ2104,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-11 10:17:40

Podobnie używałem color.xml:

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

Do Ustawienia tła TextView W Stylu:

textView.setTextColor(R.color.white);

Otrzymywałem inny kolor, ale gdy użyłem poniższego kodu, otrzymałem rzeczywisty kolor.

textView.setTextColor(Color.parseColor("#ff6363"));
 0
Author: Raj Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 16:47:40

I did this way: Utwórz plik XML o nazwie Colors w folderze res / values.

Moje Kolory.xml:
    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="vermelho_debito">#cc0000</color>
    <color name="azul_credito">#4c4cff</color>
    <color name="preto_bloqueado">#000000</color>
    <color name="verde_claro_fundo_lista">#CFDBC5</color>
    <color name="branco">#ffffff</color>
    <color name="amarelo_corrige">#cccc00</color>
    <color name="verde_confirma">#66b266</color>
</resources>

Aby pobrać te kolory z pliku xml, użyłem tego kodu: valor to TextView, a ctx to obiekt kontekstowy. Nie używam go z aktywności, ale BaseAdapter do ListView. Dlatego użyłem tego obiektu kontekstowego.

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));
Mam nadzieję, że to pomoże.
 0
Author: Cristiano Guerra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-17 12:19:53

Dla podania wartości rgb: text.setTextColor(Color.rgb(200,0,0));
Do analizy koloru z wartości szesnastkowej: text.setTextColor(Color.parseColor("#FFFFFF"));

 0
Author: Comrade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-26 21:39:01

Jeśli jesteś w adapterze i nadal chcesz użyć koloru zdefiniowanego w zasobach, możesz wypróbować następujące podejście:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
 0
Author: Aleks Nine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-18 13:55:41
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
 0
Author: Pedro Lobito,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-23 22:55:27

GetColor() jest przestarzały

Więc spróbuj w ten sposób:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
 0
Author: kgandroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 10:43:39

Robiłem to dla TextView w Viewholderze dla RecyclerView. Nie jestem tak pewien dlaczego, ale to nie działa dla mnie w viewholder inicjalizacji.

public ViewHolder(View itemView) {
    super(itemView);
    textView = (TextView) itemView.findViewById(R.id.text_view);
    textView.setTextColor(context.getResources().getColor(R.color.myColor));
    // Other stuff
}

Ale kiedy przeniosłem go do onBindViewHolder, działało dobrze.

public void onBindViewHolder(ViewHolder holder, int position){
    // Other stuff
    holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}
Mam nadzieję, że to komuś pomoże.
 0
Author: IsaiahJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-02 09:27:18