Android Color.parseColor为R.color.xyz赋予不同的值

时间:2017-05-18 19:31:57

标签: android android-layout

我在我的应用中通过以下方式使用颜色值:

R.color.colorAccent

哪个被正确定义为:

<color name="colorAccent">#FF4081</color>

然而,在运行应用程序时,它会产生一种几乎像灰色的深色。当我使用

Color.parseColor("#FF4081")

它给出正确的红色/粉红色。这是预期的行为吗?我是否应该要求将R.color.colorAccent转换回十六进制值,然后通过Color.parseColor运行它以获得我期望的颜色?

2 个答案:

答案 0 :(得分:0)

您需要将颜色实际解析为Android颜色,而不是直接引用资源int。

使用

getResources().getColor(R.color.colorAccent);

ContextCompat.getColor(context, R.color.colorAccent);
支持库中的

答案 1 :(得分:0)

R.color.ColorAccent返回资源ID,而不是实际颜色。系统仍然将id识别为有效,并根据id显示颜色,而不是十六进制值。

你需要做这样的事情

view.setColor(context.getResources().getColor(R.color.colorAccent));