TextView setTextColor () не работает - PullRequest
64 голосов
/ 30 мая 2011

Я программно создаю список (нет 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 с идентификатором "lagerstand_text" по умолчанию установил красный цвет. Это работает.

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

lagerstandText.setText("bla");

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

lagerstandText.setTextColor(R.color.red);

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

Почему это?

Ответы [ 5 ]

200 голосов
/ 30 мая 2011

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

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

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));
1 голос
/ 19 августа 2017

1.стандартный цвет, который вы предпочитаете.*

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

или

subText.setTextColor(Color.rgb(255,192,0));
1 голос
/ 29 сентября 2016

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

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

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

0 голосов
/ 05 апреля 2016

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