获取可绘制资源

Gar*_*rry 8 c# android drawable xamarin.android android-resources

我正在使用MonoDevelop for Android,我正在尝试从资源文件夹中的图像创建一个Drawable变量.

我的Resources\drawable文件夹中有以下文件:

Icon.png
monkey.png
monkeyPurple.png
Run Code Online (Sandbox Code Playgroud)

如何创建具有从其中一个文件获取的图像的Drawable变量?

我试过以下代码:

Drawable icon = Drawable.CreateFromPath("Icon.png");
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用.如果这是从文件加载图像的正确方法,我是否需要具有文件的完整文件名和路径?我已经尝试了很多组合来访问图像,没有运气.

我也尝试过以下方法:

Drawable icon = R.getResources().getDrawable(R.drawable.Icon); 
Drawable icon = R.getResources().getDrawable(R.drawable.monkey);
Run Code Online (Sandbox Code Playgroud)

也没有运气.

我可以帮助您正确创建一个包含资源文件夹中图像的Drawable变量吗?

谢谢

Kir*_*irk 14

你非常接近,但我认为你正在混合使用Java和C#.

您可以使用该Resource结构访问它.我已经将下面的Android和Java版本的Mono用于参考,但在您的情况下,如果您使用Mono for Android,则需要C#版本.

Android单声道(C#)

Drawable icon = Resources.GetDrawable(Resource.Drawable.Icon);
Run Code Online (Sandbox Code Playgroud)

Android SDK(Java)

Resources res = getResources();
Drawable icon = res.getDrawable(R.drawable.Icon);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.完美的工作. (3认同)

Muj*_*aFR 5

从Android API版本21开始,不赞成使用旧方法,并将其替换为以下方法:

Drawable icon = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.Icon, null);
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看原始的Android答案