在我的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));