Xamarin Forms 图像不显示

Xamarin Forms image not showing

我有一个 Xamarin Forms (2.0) Android 应用程序,我试图在其中显示图像。我有一个名为 icon-pages-r1.png 的图标,我试图使用以下代码显示它:

<Image Source="icon-pages-r1.png" />

虽然没有显示图像。当我将源更改为 Icon.png(默认的 Xamarin 图标)时,它确实有效。

图像是半透明的 PNG(因此中间有一个彩色图标,周围是透明的),它是 46x46,在 Windows 中它显示为项目类型 PNG 文件。我尝试在 Paint 中打开图像并重新保存它(这会破坏透明度),但这也不起作用。图片的 Build ActionAndroidResourceCopy to Output Directory 设置为 Do not copy

有谁知道为什么我无法在我的应用程序中显示此图片?

您不能在 Xamarin 的图像名称中使用连字符 Android。去掉连字符(在文件名和图像引用中),您将被设置。

对于可能会在这里结束的其他人...

确保图像文件实际上是项目的一部分 (Resources\drawable) 并且构建操作是 AndroidResource。

当绑定到 android 中的图像资源名称时,我发现它必须是:

  • 在 Resources/Drawable 文件夹中
  • 设置构建操作:AndroidResource
  • 设置复制到输出:不复制
  • 名称中不允许使用连字符
  • 名称区分大小写

我将此 issue.I 设置为 MSBuild project build output verbosityDiagnostic。现在,当我搜索 OOM.

时,我在输出 window 中发现了以下内容

ImageRenderer: Error loading image: Java.Lang.OutOfMemoryError: Failed to allocate a 571513228 byte allocation with 2140744 free bytes and 92MB until OOM

现已试用

  • 创建一个 png 大小小于 200KB 且大小小于 1400 X 1050 的图像(用于测试目的).

它运行良好。

注意:“MSBuild 项目构建输出详细信息”可以在工具 -> 选项 -> 项目和解决方案 -> 构建和 运行

下找到

一般检查点

  • 阅读Local Images
  • 确保文件名只包含小写字母。
  • 将该 png 文件添加到 Resources/drawable 文件夹中。

创建内容页面如下

<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
    <Label Text="Pre" />
    <Image Source="abstracttriangleg.png"  
           Aspect="AspectFill" VerticalOptions="End" HorizontalOptions="CenterAndExpand"/>
    <Label Text="Post" />
</StackLayout>
  • 清洁溶液。
  • 清理 binObj 个文件。

Resources 说:

Android supports bitmap files in three formats: .png (preferred), .jpg (acceptable), .gif (discouraged).

Compress PNG and JPEG files 说:

You can reduce PNG file sizes without losing image quality using tools like pngcrush, pngquant, or zopflipng. All of these tools can reduce PNG file size while preserving the perceptive image quality.

The pngcrush tool is particularly effective.

To compress JPEG files, you can use tools like packJPG and guetzli.

参考文献:

  1. Android : Maximum allowed width & height of bitmap

  2. Handling Bitmaps

对于iOS

第 1 步:将您的图像添加到 ios -> Resources 文件夹(如果不创建它)

第 2 步; 右击图像 -> 属性 -> 生成操作 -> 设置为 "Content"