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