2016-03-02 5 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步;右鍵單擊圖像 - >屬性 - >構建動作 - >設置爲「內容」