当我的.net maui应用程序启动时,它会从云中加载一些图像并存储到FileSystem.AppDataDirectory
文件夹。然后在离线模式下,它应该从文件夹中获取这些图像以显示在图像视图中,但代码不起作用(将使用绑定,但为了演示起见,它是硬编码的):
<Image WidthRequest="30" HeightRequest="30">
<Image.Source>
<FileImageSource File="/data/user/0/mytestapp/files/Icontest.svg" />
</Image.Source>
</Image>
当我将文件源替换为URL源时,如果从云中加载,相同的图像工作正常。/data/user/0/mytestapp/files/
是FileSystem.AppDataDirectory
调用返回的内容,我只是在末尾添加了文件名
你知道它是否支持从文件夹中加载图像文件吗?
注意:缓存url源不满足应用程序的要求。
2条答案
按热度按时间ar7v8xwq1#
SVG是预先渲染的,并随应用程序一起提供。您必须在XAML中将其作为PNG引用。(在IOS上,如果您使用. svg,它甚至不会显示)但这不是它。
一旦用PNG替换了SVG资源,就会遇到另一个问题。
Android会将您的文件缓存到您的文件系统中,您对此无能为力:https://github.com/dotnet/maui/issues/9773
有两种解决方法:
1.每次都更改文件名,这样就不会找到它。
1.通过删除此处的所有内容来清除缓存:
Path.Combine(FileSystem.CacheDirectory, "image_manager_disk_cache");
我认为这两种变通办法的负面影响都很明显。祈祷明年能修好。
6yt4nkrj2#
Image控件最初无法直接从设备外部存储中获取文件,使用
FileImageSource
获取项目中设置为嵌入式资源的图像文件。所以你可能需要使用流来读取文件,然后使用
ImageSource.FromStream
来设置图像源。例如:但是ImageSource is not work when set Image.Source to file in external storage有一个bug,即使已经将图像文件作为流读取,图像也不会显示,大家可以在github上跟进这个问题。