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>

кроме того, я определил некоторые цвета в значения цветов.XML. Как вы видите, TextView с идентификатором "lagerstand_text"по умолчанию имеет красный цвет. Эта работа.

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

lagerstandText.setText("bla");

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

lagerstandText.setTextColor(R.color.red);

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

почему это?

5 63

5 ответов:

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

таким образом, есть много способов для достижения этой задачи.

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

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

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

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

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

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

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