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

56
在string.xml文件中,我使用以下标签:
<color name="mycolor1">#F5DC49</color>
如果我使用

 textview1.setTextColor(Color.CYAN);

它能够工作,但是

 textview1.setTextColor(R.color.mycolor1);

无法正常工作。

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

3个回答

83

TextView.setTextColor() 方法需要一个表示颜色的整数值(例如 0xFFF5DC49),而不是来自 XML 文件的资源 ID。在 Activity 中,您可以这样做:

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

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

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

22
 textView1.setTextColor(Color.parseColor("#F5DC49"));

没有资源


14

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开始,返回的颜色将为指定上下文的主题进行样式设置


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接