TextView setTextColor() не работает

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

    <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>

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

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

lagerstandText.setText("bla");

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

lagerstandText.setTextColor(R.color.red);

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

Почему это?

Ответ 1

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

Итак, есть много способов решить эту задачу.

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));

Ответ 3

Для справок в будущем вы можете использовать следующее:

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

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

Ответ 4

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

textview.setTextColor(Color.select_color)

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

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

или

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

или

subText.setTextColor(Color.rgb(255,192,0));

Ответ 5

Integer идентификатор для определенного цвета (определенный в макете 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