Android Color.parseColor为R.Color.xyz提供不同的值

Android Color.parseColor为R.Color.xyz提供不同的值,android,android-layout,Android,Android Layout,我通过以下方式在我的应用程序中使用颜色值: R.color.colorAccent 正确定义为: <color name="colorAccent">#FF4081</color> 它提供了正确的redish/粉红色。这是预期的行为吗?我是否需要将R.color.colorAccent转换回十六进制值,然后通过color.parseColor运行它以获得我期望的颜色?您需要实际将颜色解析为Android颜色,而不是直接引用资源int 使用 或 在支持库中,您需要将颜色

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

R.color.colorAccent
正确定义为:

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

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

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

使用


在支持库中,您需要将颜色解析为Android颜色,而不是直接引用资源int

使用


在支持库中

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

你需要这样做

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

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

你需要这样做

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

如果在您不期望的情况下得到深灰色,很可能是因为您使用的是ID作为颜色。相反,使用ID来查找颜色。如果在您不期望的情况下得到深灰色,很可能是因为您使用ID作为颜色。而是使用ID来查找颜色。
ContextCompat.getColor(context, R.color.colorAccent);
view.setColor(context.getResources().getColor(R.color.colorAccent));