关于android:TextView setTextColor()无效

TextView setTextColor() not working

我以编程方式创建这样的元素的列表(没有ListView,只是将它们添加到父级):

1
2
3
4
5
6
7
8
    <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中定义了一些颜色。 如您所见,ID为"lagerstand_text"的TextView默认将其颜色设置为红色。 这样可行。

用Java创建元素时,我做到了

1
lagerstandText.setText("bla");

对于某些元素,我也这样做

1
lagerstandText.setTextColor(R.color.red);

和其他颜色。 虽然我没有调用setTextColor()的元素是红色的,但是所有其他元素都是灰色的,无论我选择哪种颜色(即使它再次是相同的红色)。

这是为什么?


文档对此并不是很冗长,但在调用setTextColor时不能只使用R.color整数。您需要调用getResources().getColor(R.color.YOURCOLOR)来正确设置颜色。

使用以下命令以编程方式设置文本的颜色:

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

从支持库23开始,您必须使用以下代码,因为不推荐使用getColor:

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


因此,有很多方法可以完成这项任务。

1。

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

2。

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

3。

1
textView.setTextColor(0xffbdbdbd);

4。

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

5。

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


1.标准颜色你喜欢请跟下面。

1
textview.setTextColor(Color.select_color)

2.想要使用custwom颜色将其添加到color.xml文件中

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

要么

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

要么

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

为了将来参考,您可以使用以下内容:

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

这样您就可以使用颜色资源。


R类中定义的特定颜色(在xml布局中定义)的整数id不能作为参数传递给View类的setTextColor()方法。
您必须通过以下代码行获取setTextColor()的参数:

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

方法getColor(int id)已经过折旧...而是使用上面代码行中的getColor(int id,Resources.Theme theme)

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