无法从int转换为Android.Graphics.Color



在我的Resources--> Values--> colors.xml

<color name="myview_background">#EDDDDD</color>

我正试图将这种颜色分配如下:

 holder.ItemView.SetBackgroundColor(Resource.Color.myview_background);

我遇到了以下错误,我想知道如何修复?

无法从int转换为Android.Graphics.Color

试试这个:

holder.ItemView.SetBackgroundColor(_activity.Resources.GetColor(Resource.Color.mainview_background));

请注意,Resources.GetColor(int)不适用于Android API 23级(棉花糖)。

标准

因此,如果你想获得23或更大的API的颜色资源,你需要额外包括用于样式颜色属性的主题:

if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
{
    holder.ItemView.SetBackgroundColor(Resources.GetColor(Resource.Color.mainview_background, Theme));
}
else
{
    holder.ItemView.SetBackgroundColor(Resources.GetColor(Resource.Color.mainview_background));
}

v4支持库

如果您正在使用支持库(版本23+),则可以使用ContextCompat.getColor(context, R.color.your_color);

holder.ItemView.SetBackgroundColor(new Android.Graphics.Color(Android.Support.V4.Content.ContextCompat.GetColor(Resource.Color.mainview_background)));

这对我来说效果更好:

view.SetBackgroundResource(Resource.Color.my_color);

正因为我不需要获得实际的颜色,如果你想使用图像或任何类型的可绘制图像,它也可以使用:

view.SetBackgroundResource(Resource.Drawable.my_drawable);

这是我通常的做法!

holder.ItemView.SetBackgroundColor(getResources().getColor(R.color.myview_background));

相关内容

最新更新