Как установить цвет текста TextView в коде?

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

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

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

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

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

+481
источник поделиться
33 ответа
  • 1
  • 2

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

holder.text.setTextColor(Color.RED);

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


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

  • Color.parseColor (руководство) (например, использование LEX)

    text.setTextColor(Color.parseColor("#FFFFFF"));
    
  • Color.rgb и Color.argb (Manual rgb) (Manual 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);
    

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

Посмотрите полное руководство, конечно, открытый класс Цвет расширяет объект.


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

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

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

+1125
источник

Если вы все еще хотите указать свои цвета в своем 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, однако тема, которую вы передаете, может быть нулевой, так что, может быть, это проще для вас?

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

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
+130
источник
другие ответы

Связанные вопросы


Похожие вопросы

И еще один:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
+42
источник

Вы можете сделать это только из файла 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));
+35
источник

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

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

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

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

a для альфа (прозрачное) значение r-red g-green b-blue

+25
источник

используйте следующий код в 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" />
+12
источник

Существует множество способов задать цвет в текстовом виде.

  • Добавить значение цвета в studio res- > values- > colors.xml как

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

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

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

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

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

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

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

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

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

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
+11
источник

Я обычно делаю это для любых просмотров:

myTextView.setTextColor(0xAARRGGBB);

где

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

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

+8
источник

Если вы планируете использовать 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 порядок произвольный.

+7
источник

Я считаю, что если вы хотите указать цвет в качестве ресурса (в файле XML), вам нужно будет предоставить его значение ARGB (не просто значение RGB).

Попробуйте изменить значение цвета на #FFFF0000. Он должен дать вам КРАСНЫЙ.

+5
источник

Использование:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
+4
источник
holder.text.setTextColor(Color.rgb(200,0,0));

или же

myTextView.setTextColor(0xAARRGGBB);
+4
источник
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

В файле colors.xml напишите код ниже:

<color name="colorWhite">#FFFFFF</color>
+4
источник

Используя адаптер, вы можете установить цвет текста с помощью этого кода:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
+3
источник
text1.setTextColor(Color.parseColor("#000000"));
+3
источник
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

Над мной работает код. Здесь text является TextView, для которого необходимо установить цвет.

+3
источник

text.setTextColor(getResource().getColor(R.color.black)) вас есть черный цвет в color.xml.

ИЛИ ЖЕ

text.setTextColor(Color.parseColor("#000000")) здесь введите желаемый шестнадцатеричный код

ИЛИ ЖЕ

text.setTextColor(Color.BLACK) вы можете использовать статические поля цвета

+3
источник

В адаптере вы можете установить цвет текста с помощью этого кода:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
+1
источник
   textViewStatus.setTextColor(res.getColor(R.color.green));
+1
источник

если вы хотите напрямую указать цветовой код, используйте

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

или если вы хотите указать цветовой код из папки цветов, используйте

textView.setTextColor(R.color.white);
+1
источник

Чтобы установить цвет TextView, TextView.setTextColor(R.color.YOURCOLOR) недостаточно!

Его нужно использовать так:

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

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

ИЛИ

myText.setTextColor(Color.parseColor("#54D66A"));
+1
источник
holder.userType.setTextColor(context.getResources().getColor(
                    R.color.green));
+1
источник

Начиная с API 23, getResources().getColor() устарела.

Используйте это вместо:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
+1
источник

Точно так же я использовал color.xml:

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

Для установки фона TextView:

textView.setTextColor(R.color.white);

Я получал другой цвет, но когда я использовал приведенный ниже код, я получил фактический цвет.

textView.setTextColor(Color.parseColor("#ff6363"));
0
источник

Для обеспечения значений rgb: text.setTextColor(Color.rgb(200,0,0));
Для разбора цвета по шестнадцатеричному значению: text.setTextColor(Color.parseColor("#FFFFFF"));

0
источник

Вы можете использовать textView.setTextColor(Color.BLACK) для использования любых встроенных цветов класса Color.

Вы также можете использовать textView.setTextColor(Color.parseColor(hexRGBvalue)) для определения пользовательских цветов.

0
источник

Я сделал так: Создайте XML файл под названием Colors в папке res/values.

My Colors.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>

Чтобы получить эти цвета из xml файла, я использовал этот код:  доблесть это TextView, а ctx - объект контекста. Я не использую его из Activity, а BaseAdapter для ListView. Вот почему я использовал этот объект контекста.

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

Надеюсь, что это поможет.

0
источник

Если вы находитесь в адаптере и все еще хотите использовать цвет, определенный в ресурсах, вы можете попробовать следующий подход:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
0
источник
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
0
источник

getColor() отменен

Итак, попробуйте следующим образом:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
0
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос