2011-05-30 4 views
63

программно создать список (не является ListView, просто добавляя их к родителю) таких элементов:TextView SetTextColor() не работает

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:orientation="vertical" android:layout_weight="1"> 
    <TextView android:id="@+id/filiale_name" 
    android:layout_width="fill_parent" android:layout_height="wrap_content"/> 
    <TextView android:id="@+id/lagerstand_text" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:textSize="10sp" android:textColor="@color/red"/> 
</LinearLayout> 

Кроме того, я определил некоторые цвета в значениях/colors.xml , Как видите, TextView с идентификатором «lagerstand_text» по умолчанию задал красный цвет. Это работает.

При создании элементов в Java, я

lagerstandText.setText("bla"); 

и для некоторых элементов также я

lagerstandText.setTextColor(R.color.red); 

и другие цвета. Хотя элементы, на которых я не называю setTextColor(), являются красными, все остальные являются серыми, независимо от того, какой цвет я выбрал (даже если он снова красный).

Почему?

+0

Если мой ответ helpfukl для вы можете принять ответ –

ответ

188

Документация не очень подробно изложена, но вы не можете использовать только целое число R.color при вызове setTextColor. Чтобы правильно установить цвет, вам необходимо позвонить getResources().getColor(R.color.YOURCOLOR).

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

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

Начиная с поддержкой библиотеки 23 вы должны использовать следующий код, потому что GetColor осуждается:

textView.setTextColor(ContextCompat.getColor(context, R.color.YOURCOLOR)); 
+2

Хорошо, это работает. Документация API может быть немного более подробной в этом случае ... –

+12

также вы можете использовать цвет. (здесь красный зеленый черный синий желтый и другие) setTextColor (Color.RED) – Peter

+0

Спасибо за информацию ... но это getResources() заставляет меня пройти цепочку контекстов. Должен быть какой-то лучший способ доступа к глобальным ресурсам. – Umair

31

Итак, существует много способов достижения этой задачи.

1.

int color = Integer.parseInt("bdbdbd", 16)+0xFF000000); 
textview.setTextColor(color); 

2.

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

3.

textView.setTextColor(0xffbdbdbd); 

4 .

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

5.

textView.setTextColor(Color.argb(a_int, r_int, g_int, b_int)); 
+0

Есть ли способ узнать если конкретное значение цвета приведет к исчезновению текста? –

+0

@ КристоферМассер не понимает, что вы хотите сказать ??? – duggu

+0

Я настраиваю яркость цвета перед использованием setTextColor (цвет). В некоторых неизвестных случаях TextView просто исчезает на устройстве (независимо от фона). Я хочу написать тестовую функцию, чтобы проверить, является ли «цвет» допустимым значением цвета перед его использованием в setTextColor (цвет). –

0

Целое идентификатор для определенного цвета (определенного в компоновке XML), определенной в R классе не может быть передан в качестве параметра setTextColor() метода View класса. Вы должны получить параметр setTextColor() в следующей строке кода:

int para=getResources().getColor(R.color.your_color,null); 
view.setTextColor(para,null); 

getColor(int id) метод был амортизируется ... вместо того, чтобы использовать getColor(int id,Resources.Theme theme) как в строке кода выше.

The `second parameter(theme)` can be null 
1

Для дальнейшего использования, вы можете использовать следующие файлы:

String color = getString(Integer.parseInt(String.valueOf(R.color.my_color))); 
my_textView.setTextColor(Color.parseColor(color)); 

Таким образом, вы можете использовать ваши цвета ресурсов.

2

1.стандартный цвет u предпочитаю, пожалуйста, перейдите ниже.

textview.setTextColor(Color.select_color) 

2.here хотите использовать custwom цвет добавить его в color.xml файле

textview.setTextColor(getResources().getColor(R.color.textbody)); 

или

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

или

subText.setTextColor(Color.rgb(255,192,0)); 
Смежные вопросы