2016-03-02 68 views
11

我有一个Xamarin Forms(2.0)Android应用程序,我试图展示图像。我有叫icon-pages-r1.png一个图标,可我想用下面的代码显示:Xamarin表单图像不显示

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

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

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

有谁知道为什么我不能让这个图像显示在我的应用程序?

+1

它在资源/可绘制?您也可以尝试清理您的解决方案并手动添加bin和obj文件夹。有时候这有帮助。 – Jason

+0

Build Action定义在哪里? – nishantvodoo

+0

@ keanu101你可以通过转到对象的属性来设置它(右键点击解决方案资源管理器 - >属性)。 –

回答

18

您不能在Xamarin Android的图像名称中使用连字符。摆脱连字符(在文件名和图片引用中),你就会被设置。

+3

呃,这是问题所在。该死的,我浪费了小时来弄清楚这个愚蠢的无证规则。提示他人:转到工具 - >选项 - >项目和解决方案 - >构建和运行 - > MSBuild项目构建输出冗长 - >将其设置为'普通'而不是'最小'。这实际上会将其显示为输出中的错误。 –

+1

“正常”并没有削减我。我必须将其设置为“诊断”,直到我真正设法查看与PNG相关的错误。 –

8

对于其他人谁可能在这里结束了......

确保图像文件实际上是项目(资源\绘制),而生成操作是AndroidResource的一部分。

4

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

    在资源
  • /可绘制文件夹
  • 集生成操作:AndroidResource
  • 集复制到输出:不要复制
  • 不允许在名字连字符
  • 名称是区分大小写
0

我有这个问题。我设MSBuild project build output verbosityDiagnostic。现在,当我搜索OOM时,我在“输出”窗口中找到了以下内容。

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

现在试图

  • 创建,其具有小于200KB尺寸和小于1400 X 1050大小(用于测试目的)一个png图像。

它工作正常。

注: “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. Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM

  3. Handling Bitmaps

+0

更多参考:[高效载入大型位图](https://developer.android.com/topic/performance/graphics/load-bitmap.html)和[高效载入大型位图](https://developer.xamarin.com /食谱/安卓/资源/一般/ load_large_bitmaps_efficiently /) – Lijo

0

对于iOS

第1步:添加您的图像分为IOS - >资源文件夹(如果没有创建它)

第2步;右键单击图像 - >属性 - >构建动作 - >设置为“内容”