如何在Android中设置TextView的颜色?

在string.xml文件中我使用下面的标签

<color name="mycolor1">#F5DC49</color> 

如果我使用

  textview1.setTextColor(Color.CYAN); 

它工作,但是

  textview1.setTextColor(R.color.mycolor1); 

不pipe用。

我如何使用XML文件中定义的颜色?

TextView.setTextColor()接受一个表示颜色的int(例如0xFFF5DC49),而不是来自xml文件的资源ID。 在一个活动中,你可以做一些事情:

  textView1.setTextColor(getResources().getColor(R.color.mycolor)) 

在一个活动之外,你需要一个Context例如。

  textView1.setTextColor(context.getResources().getColor(R.color.mycolor)) 
  textView1.setTextColor(Color.parseColor("#F5DC49")); 

没有资源

context.getResources().getColor已弃用。

您需要使用ContextCompat.getColor() ,它是Support V4 Library的一部分 (所以它可以用于以前的所有API)。

 ContextCompat.getColor(context, R.color.my_color); 

您将需要通过将以下内容添加到应用程序build.gradle中的dependencies数组中来添加Support V4库:

 compile 'com.android.support:support-v4:23.0.1' # or any version above 

如果您关心主题,文档指定该方法将使用上下文的主题:

从M开始,返回的颜色将根据指定的上下文主题进行样式化