ContextCompat.GetColor不返回Color

Ale*_*fan 8 android xamarin android-6.0-marshmallow

我正在尝试用ContextCompat.GetColor替换Resources.GetColor,但最后一个没有返回颜色,我不知道应该使用什么而不是Resources.GetColor(从API 23中弃用).任何人都可以帮助我(见下面我想要实现的目标)?

Button.SetBackgroundColor(ContextCompat.GetColor(this, Resource.Color.LightRed));
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是Xamarin,但是如果你在java中有答案,我可以很容易地适应它.谢谢!

小智 2

ContextCompat 仅返回颜色的整数表示形式。您需要通过拆分 RGB 部分将其转换为 Android 颜色。使用这样的东西

using Android.Graphics;

public static Color GetColorFromInteger(int color)
{
    return Color.Rgb(Color.GetRedComponent(color), Color.GetGreenComponent(color), Color.GetBlueComponent(color));
}
Run Code Online (Sandbox Code Playgroud)

并在你的方法中

btn.SetBackgroundColor(GetColorFromInteger(ContextCompat.GetColor(this, Resource.Color.LightRed);
Run Code Online (Sandbox Code Playgroud)