我可以使用
显示Drawable文件夹中的图像<image source="live.png"/>
但我不知道如何从我在Resource中创建的其他文件夹中获取图像 有人可以帮帮我吗?
答案 0 :(得分:1)
Android对于放置图像的位置非常挑剔,所以最好的办法是将图像存储在常见项目中。在这个例子中,我假设一个标准的Xamarin.Forms解决方案,包括以下项目:Foo,Foo.Android,Foo.IOS和Foo.UWP。你的名字显然会有不同的名字,所以你必须用Foos代替......
以下所有代码都将进入公共代码项目Foo
。
首先,创建一个名为Extensions
的新文件夹(只是为了保持代码整洁)并将以下类添加到其中:
[ContentProperty(nameof(Source))]
public class ImageResourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
var imageSource = ImageSource.FromResource(Source);
return imageSource;
}
}
现在将此类的命名空间添加到标记中:
xmlns:extensions="clr-namespace:Foo.Extensions"
接下来,再次在您的公共项目中创建图像文件夹,而不是在Android项目中。您也可以创建子文件夹。添加图像并确保每个图像的构建操作都设置为Embedded Resource
。
现在您可以像这样在XAML中引用这些图像:
<Image Source="{extensions:ImageResource Foo.Images.Subfolder.Bar.png}">
请注意,您需要提供图像的完整路径,包括项目名称(在本例中为Foo),文件夹由点而不是斜线分隔。