2015-06-15 59 views
13

我有困難撫養的內容頁面上的圖像中的堆棧佈局。我查看了Xamarin API文檔,發現Xamarin.Forms.Image.Source Property,但沒有示例代碼來了解它是如何寫入的。我也檢查了它是如何用C#編寫的,似乎與我的代碼在文件名路徑方面相匹配,但在Xamarin中,它可能會稍微有點不同,因爲這是第一次這樣做。我目前正在通過Visual Studio 2013中的Android模擬器(Google Nexus 5)進行測試的代碼運行正常,但圖像未顯示。如何在Xamarin.Forms中正確使用圖像源屬性?

圖片來源:

new Image 
{ 
    VerticalOptions = LayoutOptions.Center, 
    HorizontalOptions = LayoutOptions.Center, 
    Source = "/Assets/xamarin_logo.png", 
}, 

全碼:

public NFCPage() 
    { 
     StackLayout stackLayout = new StackLayout // instantiate a StackLayout object to layout its children 
     { 
      Spacing = 5, // amount of spae between each child element 
      //HorizontalOptions = LayoutOptions.Center, 
      VerticalOptions = LayoutOptions.FillAndExpand, // defines how the elements should be laid out; fill the entire width of the content to the screen 
      BackgroundColor = Color.Blue, 

      Children = // gets a list of child elements 
      { 
       new Label 
       { 
        TextColor = Color.White, 
        BackgroundColor = Color.Red, 
        XAlign = TextAlignment.Center, // set text alignment horizontally 
        Text = "Google", 
       }, 
       new Label 
       { 
        Text = "Place your device directly at the symbol.", 
        XAlign = TextAlignment.Center, 
        TextColor = Color.White, 
       }, 
       new Image 
       { 
        VerticalOptions = LayoutOptions.Center, 
        HorizontalOptions = LayoutOptions.Center, 
        Source = "/Assets/xamarin_logo.png", 
       }, 
       new Button 
       { 
        Text = "QR Code", 
        TextColor = Color.White, 
       }, 
       new Button 
       { 
        Text = "?", 
        TextColor = Color.White, 
       }, 
      } 
     }; 
     Content = stackLayout; // apply stackLayout to Content 
    } 
+1

你看了這個文檔 - http://developer.xamarin.com/guides /跨平臺/ xamarin表單/工作與/圖片/?通常在Android上,您將圖像添加爲可繪製資源,然後只指定圖像名稱,表單將在資源中找到適當的圖像。 – Jason

+0

感謝您的信息。我有另一個問題要問,我在哪裏指定圖像放置到頁面上,代碼如下:var NfcImage = new Image {Aspect = Aspect.AspectFit}; NfcImage.Source = ImageSource.FromFile( 「xamarin_logo.png」);'?如果我把它放在'new Image {}'的構造函數 – TheAmazingKnight

+0

中,我想不出來,我跟着名爲「Local Images」的那個,並將文件路徑名調整爲'Source =「xamarin_logo.png」'工作。非常感謝鏈接。它確實有幫助。 – TheAmazingKnight

回答

19

因爲源屬性是跨平臺的,因爲每一個平臺,你不應該引用路徑具有不同的像圖片這樣的資源的文件夾,你只需要指定文件名和擴展名。 Image類知道在哪裏查找文件。

圖像文件可以被添加到每個應用程序的項目和參考從共享代碼Xamarin.Forms。要在所有應用程序中使用單個圖像,必須在每個平臺上使用相同的文件名,並且它應該是有效的Android資源名稱(表示不含空格和特殊字符)。使用Build Action:AndroidResource將圖像放置在Resources/drawable目錄中。圖像的高和低DPI的版本也可以(在適當命名資源的子目錄如可繪製-LDPI,可繪製-HDPI,和可拉伸 - xhdpi)提供。

enter image description here

var beachImage = new Image { Aspect = Aspect.AspectFit }; 
beachImage.Source = ImageSource.FromFile("waterfront.jpg"); 

來源:https://developer.xamarin.com/guides/xamarin-forms/working-with/images/#Local_Images

+1

在UWP項目保持根文件夾下的所有圖片是不是最好的解決辦法,你有什麼其他的解決方案,以保持圖像的子文件夾下。 請參考這裏的問題。 http://stackoverflow.com/questions/37939758/xamarin-cross-platform-uwp-images-are-missing – Ashaar

2

通過單擊資源/文件夾可繪製在添加Solution Explorer中的圖像,並選擇新建/現有item.Please不圖像複製到資源/可繪製夾。我希望它有幫助。

4

如果你願意使用代碼添加圖像, 試試這個

自動下載並顯示圖像

 var webImage = new Image { Aspect = Aspect.AspectFit }; 
     webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png")); 
相關問題