Как установить цвет текста TextView в коде?
В XML мы можем установить цвет текста с помощью textColor
атрибут, как android:textColor="#FF0000"
, Но как я могу изменить это кодированием?
Я попробовал что-то вроде:
holder.text.setTextColor(R.color.Red);
куда holder
это просто класс и text
имеет тип TextView
, Красный - это значение RGB (#FF0000), заданное в строках.
Но это показывает другой цвет, а не красный. Какой тип параметра мы можем передать в setTextColor()? В документации сказано int
, но это значение ссылки ресурса или что-нибудь еще?
40 ответов
Вы должны использовать:
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);
Где у вас есть сначала альфа-канал, затем значение цвета.
Ознакомьтесь с полным руководством, конечно же, публичный класс Color extends Object.
1 Этот код также был здесь:
textView.setTextColor(getResources().getColor(R.color.errorColor));
Этот метод теперь устарел в Android M. Однако вы можете использовать его из contextCompat в библиотеке поддержки, как показано в примере.
Если вы все еще хотите указать свои цвета в своем 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));
И еще один:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
Вы можете сделать это только из файла 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));
Ты можешь использовать
holder.text.setTextColor(Color.rgb(200,0,0));
Вы также можете указать, какой цвет вы хотите с прозрачностью.
holder.text.setTextColor(Color.argb(0,200,0,0));
a для альфа (прозрачного) значения r-красный g-зеленый b-синий
Используйте следующий код в 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" />
Есть много разных способов установить цвет в текстовом представлении.
Добавьте значение цвета в студии res->values->colors.xml как
<color name="color_purple">#800080</color>
Теперь установите цвет в классе xml или actvity как
text.setTextColor(getResources().getColor(R.color.color_purple)
Если вы хотите дать цветовой код, используйте ниже код Color.parseColor
textView.setTextColor(Color.parseColor("#ffffff"));
Вы также можете использовать RGB
text.setTextColor(Color.rgb(200,0,0));
Использование также может использовать прямой шестнадцатеричный код для textView. Вы также можете вставить обычный HEX, например, так:
text.setTextColor(0xAARRGGBB);
Вы также можете использовать argb с альфа-значениями.
text.setTextColor(Color.argb(0,200,0,0));
а для альфа (прозрачный) v.
И если вы используете библиотеку Compat, вы можете сделать что-то вроде этого
text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
textView.setTextColor(ContextCompat.getColor(getApplicationContext(),R.color.colorWhite));
в colors.xml
файл, напишите в коде ниже:
<color name="colorWhite">#FFFFFF</color>
Я обычно делаю это для любых просмотров:
myTextView.setTextColor(0xAARRGGBB);
где
AA определяет альфа (00 для прозрачного, FF для непрозрачного)
RRGGBB определяет обычный код цвета HTML (например, FF0000 для красного).
Если вы планируете использовать 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 порядок произвольный.
text.setTextColor(getResource().getColor(R.color.black))
у вас есть создать черный цвет в color.xml.
ИЛИ ЖЕ
text.setTextColor(Color.parseColor("#000000"))
здесь введите желаемый hexcode
ИЛИ ЖЕ
text.setTextColor(Color.BLACK)
Вы можете использовать статические поля цвета
Использование:
TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
holder.text.setTextColor(Color.rgb(200,0,0));
или же
myTextView.setTextColor(0xAARRGGBB);
Kotlin Extension Solution
Добавьте их, чтобы упростить изменение цвета текста
Для настройки ColorInt
myView.textColor = Color.BLACK // or Color.parseColor("#000000"), etc.
var TextView.textColor: Int
get() = currentTextColor
set(@ColorInt color) {
setTextColor(color)
}
Для настройки ColorRes
myView.setTextColorRes(R.color.my_color)
fun TextView.setTextColorRes(@ColorRes colorRes: Int) {
val color = ContextCompat.getColor(context, colorRes)
setTextColor(color)
}
если вы используете Kotlin, есть 4 способа: (с держателем)
Используйте ресурс Android :
Holder.textView.setTextColor(Color.GREEN)
Используйте RGB:
Holder.textView.setTextColor(Color.rgb(255, 87, 34))
3) Используйте шестигранник :
holder.textView.setTextColor(Color.parseColor("#C2185B"))
4) Используйте ресурс проекта : (требуется уровень API 23)
holder.textView.setTextColor(context.resources.getColor(R.color.colorMax,null))
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));
Над кодом работает на моей стороне. Вот text
это TextView, для которого необходимо установить цвет.
Используя адаптер, вы можете установить цвет текста, используя этот код:
holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
Начиная с API 23 и далее, getResources().getColor()
устарела.
Используйте это вместо:
textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
Чтобы установить цвет 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"));
Я сделал это следующим образом: создать 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-файла, я использовал этот код: valor это TextView, а ctx это объект Context. Я использую его не из Activity, а через BaseAdapter для ListView. Вот почему я использовал этот объект контекста.
valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));
Надеюсь, поможет.
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));
Я знаю, что есть много вопросов, и сейчас уже поздно отвечать на них, но просто чтобы помочь тому, кто застрял, как я:
Если вы получаете сообщение об ошибке Невозможно разрешить символ Цвет
Вы должныimport android.graphics.Color
а потомtxt.setTextColor(Color.parseColor("#FFFFFF"))
Попробуй это:
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
Если вы хотите дать цветовой код напрямую, используйте
textView.setTextColor(Color.parseColor("#ffffff"));
или если вы хотите дать цветовой код из папки цветов, используйте
textView.setTextColor(R.color.white);
Попробуй это:
TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));
В адаптере вы можете установить цвет текста, используя этот код:
holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
Это сработало для меня внутри адаптера Recycler View (Compile API = 33):
@Override
public void onBindViewHolder(@NonNull MyAdapter.ViewHolder holder, int position) {
super.onBindViewHolder(holder, position);
.
.
.
holder.view.myTextView.setTextColor(holder.itemView.getResources().getColor(R.color.green));
.
.
.
}