TextView setTextColor()不工作

我以编程方式创build这样的元素的列表(不是一个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中定义了一些颜色。 如你所见,ID为“lagerstand_text”的TextView在默认情况下将其颜色设置为红色。 这样可行。

在Java中创build元素时,我会这样做

 lagerstandText.setText("bla"); 

对于一些元素,我也是

 lagerstandText.setTextColor(R.color.red); 

和其他颜色。 虽然我不称为setTextColor()的元素是红色的,但是所有其他元素都是灰色的,不pipe我select了哪种颜色(即使它再次是相同的红色)。

这是为什么?

这个文档并不是很详细,但是在调用setTextColor时不能使用R.color整数。 您需要调用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)); 

标准颜色你喜欢请与下面一起去。

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

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

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

这样你可以使用你的色彩资源。

R类中定义的特定颜色(在xml布局中定义)的整数id不能作为parameter passing给View类的setTextColor()方法。 您必须通过以下代码行获取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