Как установить цвет текста TextView в коде? - PullRequest
504 голосов
/ 05 января 2011

В XML мы можем установить цвет текста с помощью атрибута textColor, например android:textColor="#FF0000". Но как я могу изменить это кодированием?

Я пробовал что-то вроде:

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

Где holder это просто класс, а text имеет тип TextView. Красный - это значение RGB (# FF0000), заданное в строках.

Но он показывает другой цвет, а не красный. Какой тип параметра мы можем передать в setTextColor ()? В документации написано int, но является ли это ссылкой на ресурс или что-то еще?

Ответы [ 34 ]

1162 голосов
/ 05 января 2011

Вы должны использовать:

holder.text.setTextColor(Color.RED);

Для проверки работоспособности я только что попробовал, потому что у меня все равно был открыт проект, и да, он красивый и красный; D


Вы можете использовать различные функции из класса Color, чтобы получить тот же эффект, конечно.

  • Color.parseColor (Вручную) (как в LEX)

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgb и Color.argb ( Ручной rgb ) ( Ручной argb ) (как использует Ganapathy)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
    
  • И, конечно, если вы хотите определить свой цвет в файле XML, вы можете сделать это:

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

    , поскольку функция getColor() устарела 1 , ее необходимо использовать так:

    ContextCompat.getColor(context, R.color.your_color);
    
  • Вы также можете вставить обычный HEX, например:

    myTextView.setTextColor(0xAARRGGBB);
    

    Если сначала у вас есть альфа-канал, то значение цвета.

Ознакомьтесь с полным руководством, конечно, Публичный класс Color extends Object .


1 Этот код также был здесь:

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

Этот метод теперь устарел в Android M. Однако его можно использовать из contextCompat в библиотеке поддержки , как показано в примере.

135 голосов
/ 01 апреля 2011

Если вы все еще хотите указать свои цвета в своем XML-файле:

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

Затем укажите его в своем коде одним из следующих двух способов:

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

или

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

Первое, вероятно, предпочтительнее, если вы компилируете под Android M, однако тема, которую вы передаете, может быть нулевой, так что, может быть, вам будет проще?

А если вы используетебиблиотеку Compat вы можете сделать что-то вроде этого

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
45 голосов
/ 16 сентября 2011

И еще один:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
37 голосов
/ 19 октября 2012

Вы можете сделать это только из файла XML тоже.

Создайте файл color.xml в папке значений:

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

</resources>

Затем в любом XML-файле вы можете установить цвет для текста, используя

android:textColor="@color/textbody"

Или вы можете использовать этот цвет в файле Java:

final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
27 голосов
/ 05 января 2011

Вы можете использовать

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

Вы также можете указать, какой цвет вы хотите с прозрачностью.

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

a для альфа (прозрачный) значение r-красный г-зеленый б-синий

15 голосов
/ 12 мая 2016

Существует много различных способов установить цвет в текстовом представлении.

  1. Добавить значение цвета в студии res-> values-> colors.xml как

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

    Теперь установите цвет в классе xml или actvity как

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. Если вы хотите дать цветовой код, используйте непосредственно код Color.parseColor

    textView.setTextColor(Color.parseColor("#ffffff"));   
    
  3. Вы также можете использовать RGB

    text.setTextColor(Color.rgb(200,0,0));
    
  4. Использование также может использовать прямой шестнадцатеричный код для textView.Вы также можете вставить простой HEX, например:

    text.setTextColor(0xAARRGGBB);
    
  5. Вы также можете использовать argb со значениями альфа.

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

    a для альфы (прозрачной) v.

  6. И если вы используете библиотеку Compat, вы можете сделать что-то вроде этого

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
14 голосов
/ 09 января 2015

используйте следующий код в layout.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" />
9 голосов
/ 21 декабря 2012

Обычно я делаю это для любых видов:

myTextView.setTextColor(0xAARRGGBB);

, где

  • AA определяет альфа (00 для прозрачного, FF для непрозрачного)

  • RRGGBB определяет обычный код цвета HTML (например, FF0000 для красного).

8 голосов
/ 10 сентября 2012

Если вы планируете использовать setTextAppearance , вы должны знать, что он заменит цвет текста стилем, унаследованным от темы.Поэтому, если вы хотите использовать оба, установите цвет впоследствии .

Это работает:

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

Хотя это приведет к тому, что ваш текстовый цвет будет, например, белым (длятемная тема) или черная (для светлой темы):

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

В противоположность этому в XML порядок произвольный.

6 голосов
/ 04 января 2018
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

В файле colors.xml введите следующий код:

<color name="colorWhite">#FFFFFF</color>
...