2015-06-15 13 views
13

Ho difficoltà a far apparire un'immagine nella pagina di contenuto in un layout di stack. Ho controllato la documentazione dell'Xamarin API e ho trovato Xamarin.Forms.Image.Source Property, ma nessun codice di esempio per vedere come è stato scritto. Ho anche controllato come è stato scritto in C# e sembra corrispondere al mio codice in termini di percorso del nome file, ma in Xamarin potrebbe essere leggermente diverso poiché è la prima volta che lo faccio. Il codice che sto testando attualmente tramite un emulatore Android (Google Nexus 5) in Visual Studio 2013 che funziona bene, ad eccezione dell'immagine che non viene mostrata.Come utilizzare correttamente la proprietà Image Source con Xamarin.Forms?

Fonte immagine:

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

codice completo:

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

Hai letto questo documento - http://developer.xamarin.com/guides/cross-platform/Xamarin forme/lavorare-con/images /? Generalmente su Android si aggiungono le immagini come risorse estraibili, quindi si specifica solo il nome dell'immagine e i moduli troveranno le immagini appropriate nelle risorse. – Jason

+0

Grazie per l'informazione. Ho un'altra domanda da porre, dove specificherò il posizionamento dell'immagine sulla pagina con questo codice 'var NfcImage = new Image {Aspect = Aspect.AspectFit}; NfcImage.Source = ImageSource.FromFile ("xamarin_logo.png"); '? Non funziona se lo metto nel costruttore 'new Image {}' – TheAmazingKnight

+0

L'ho capito, ho seguito quello intitolato "Local Images" e ho regolato il nome del percorso del file in "Source =" xamarin_logo.png "' e lavorato. Grazie ancora per il collegamento. Mi ha davvero aiutato. – TheAmazingKnight

risposta

19

Non dovrebbe fare riferimento al percorso perché la proprietà sorgente è cross-platform e dal momento che ogni piattaforma ha un diverso cartella per risorse come immagini, è sufficiente specificare il nome file e l'estensione. La classe Image sa dove cercare il file.

I file di immagine possono essere aggiunti a ciascun progetto di applicazione e referenziati dal codice condiviso Xamarin.Forms. Per utilizzare una singola immagine su tutte le app, lo stesso nome di file deve essere utilizzato su ogni piattaforma e dovrebbe essere un nome di risorsa Android valido (che non significa spazi e caratteri speciali). Posiziona le immagini nella directory Risorse/Drawable con Build Action: AndroidResource. È anche possibile fornire versioni DPI ad alta e bassa risoluzione (nelle subdirectory Risorse denominate in modo appropriato, come ad esempio Drawdile-LDPI, Drawable-HDPI e Drawable-XHDPI).

enter image description here

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

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

+1

Nel progetto UWP mantenere tutte le immagini nella cartella radice non è la soluzione migliore, avete qualche altra soluzione in cui conservare le immagini nella sottocartella. Si prega di fare riferimento alla domanda qui. http://stackoverflow.com/questions/37939758/xamarin-cross-platform-uwp-images-are-missing – Ashaar

2

Aggiungere l'immagine in Esplora soluzioni facendo clic su Risorse cartella/Drawable e selezionare Nuovo/Seli metta esistenti non copiare l'immagine alle Risorse/Drawable cartella. Spero possa essere d'aiuto.

4

Se siete disposti ad aggiungere immagini utilizzando il codice, provare questo

automaticamente scaricati e visualizzare l'immagine

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