在string.xml文件中,我使用以下标记
<color name="mycolor1">#F5DC49</color>
如果我使用
textview1.setTextColor(Color.CYAN);
它有效,但
textview1.setTextColor(R.color.mycolor1);
无效。
如何使用XML文件中定义的颜色?
答案 0 :(得分:81)
TextView.setTextColor()
采用表示颜色的int(例如0xFFF5DC49)而不是xml文件中的资源ID。在活动中,您可以执行以下操作:
textView1.setTextColor(getResources().getColor(R.color.mycolor))
在活动之外,您需要Context
,例如
textView1.setTextColor(context.getResources().getColor(R.color.mycolor))
答案 1 :(得分:21)
textView1.setTextColor(Color.parseColor("#F5DC49"));
没有资源
答案 2 :(得分:13)
context.getResources().getColor
已弃用。您需要使用 ContextCompat.getColor() ,它是支持V4库的一部分(因此它适用于所有以前的API)。
ContextCompat.getColor(context, R.color.my_color);
您需要通过将以下内容添加到app build.gradle中的dependencies
数组中来添加Support V4库:
compile 'com.android.support:support-v4:23.0.1' # or any version above
如果您关心主题,文档指定该方法将使用上下文的主题:
从M开始,将为指定的样式设置返回的颜色样式 上下文的主题