解决:答案是更新所有nuget程序包,并以较新版本的Android为目标。现在,图像将按预期加载。我对此不满意,因为我完全使用了Xamarin提供的代码,并且以较新版本为目标已经弃用了代码所依赖的某些项目。最初的版本是Xamarin.Forms v23,我更新到了V25
我有一个全新的Xamarin表单项目,具有一个简单的 View ,试图在其中显示图像。我尝试了几种方法来显示图像,但我一点也没有运气。
我正在使用<image>
,也尝试了FFImageLoader控件。
<StackLayout Orientation="Vertical">
<ff:CachedImage Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" WidthRequest="100" HeightRequest="100" />
<Button x:Name="btn" Text="Image" Clicked="Button_Clicked" />
<Frame OutlineColor="Red">
<Image x:Name="StupidImage" Source="{Binding Thumbnail}" Aspect="Fill" HeightRequest="100" WidthRequest="100" />
</Frame>
</StackLayout>
这是当前 View 。我还直接将Source设置为没有结果的值。
我能够获得该图像的流。我能够从流中读取所有字节。我构建了一个调试可视化器,以将字节显示为图像。从来源获取图像不是问题。获取图像控件以显示图像是一个问题。
我尝试使用 View 模型进行绑定(bind)。当失败时,我尝试直接设置源
StupidImage.Source = ImageSource.FromStream(() => result.Stream);
我还制作了字节的副本并尝试
StupidImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));
我已经尝试过
ImageSource.FromFile()
和.FromUri
。我尝试将图像作为资源添加到项目中。每次尝试都相同,读取了资源并且字节可用,但是图像控件只是不显示它。我以为这可能是大小问题,所以我设置了控件的大小。没有什么。我以为这可能是分辨率问题,所以我使用了较小的图像。我尝试了几种不同质量的图像。
然后我放弃了图像控件,得到了FFImageLoading nuget包,并给了它直接指向图像的URL。与FFImageLoading示例使用的示例相同。仍然没有图像。
我尝试了模拟器,并尝试了2种不同的物理设备。结果相同。
我也尝试使用
btn.Image = "whatever.jpg"
在按钮上设置图像,结果相同。这是每次的结果。我迷路了。如何显示图像?
编辑:
我确实做到了这一点,但仅限于模拟器
<Image x:Name="StupidImage" Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" />
和相同的
StupidImage.Source = ImageSource.FromUri(new Uri("https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg"));
编辑2-澄清
我的目标是允许用户从设备中选择照片,然后显示其预览。
最佳答案
如果您想在应用中使用图片,则可以将其加载到“共享项目”中,例如
确保将构建操作更改为嵌入式资源
然后在你的代码中
image.Source = ImageSource.FromResource("App5.Images.useravatar.png");
注意资源名称。
和XAML
<ContentPage.Content>
<StackLayout>
<Image x:Name="image" WidthRequest="50"/>
</StackLayout>
</ContentPage.Content>
关于xamarin - 使用Xamarin表单显示图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47336742/