2015-06-15 10 views
13

Ich habe Probleme, ein Bild auf der Inhaltsseite in einem Stapellayout zu erstellen. Ich habe in der Xamarin-API-Dokumentation nachgesehen und Xamarin.Forms.Image.Source Property gefunden, aber keinen Beispielcode, um zu sehen, wie es geschrieben ist. Ich überprüfte auch, wie es in C# geschrieben wurde und scheint meinen Code in Bezug auf den Pfad des Dateinamens zu vergleichen, aber in Xamarin kann es etwas anders sein, da es das erste Mal ist. Der Code, den ich derzeit über einen Android-Emulator (Google Nexus 5) in Visual Studio 2013 testen kann, läuft gut, mit der Ausnahme, dass das Image nicht angezeigt wird.Wie wird die Image Source-Eigenschaft mit Xamarin.Forms korrekt verwendet?

Image Source:

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

Voll Code:

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

Sie dieses Dokument gelesen haben - http://developer.xamarin.com/guides/Cross-Plattform/Xamarin-Formen/Arbeiten mit/Bilder /? Im Allgemeinen fügen Sie unter Android die Bilder als auszeichnungsfähige Ressourcen hinzu und geben dann nur den Bildnamen an, und Forms findet die entsprechenden Bilder in den Ressourcen. – Jason

+0

Danke für die Information. Ich muss noch eine Frage stellen: Wo gebe ich die Bildplatzierung auf der Seite mit diesem Code an? Var NfcImage = new Image {Aspect = Aspect.AspectFit}; NfcImage.Source = ImageSource.FromFile ("xamarin_logo.png"); '? Funktioniert nicht, wenn ich es in den 'new Image {}' - Konstruktor setze – TheAmazingKnight

+0

Ich fand es heraus, ich folgte dem mit "Local Images" betitelten und passte den Dateipfad zu 'Source =" xamarin_logo.png "' und es an hat funktioniert. Nochmals vielen Dank für den Link. Es hat wirklich geholfen. – TheAmazingKnight

Antwort

19

Sie nicht den Pfad verweisen, da die Quelleigenschaft ist plattformübergreifend und da jede Plattform hat eine andere Ordner für Assets wie Bilder, müssen Sie nur den Dateinamen und die Erweiterung angeben. Die Image-Klasse weiß, wo sie suchen muss, um die Datei zu finden.

Bilddateien können zu jedem Anwendungsprojekt hinzugefügt und von Xamarin.Forms shared code referenziert werden. Um ein einzelnes Image für alle Apps zu verwenden, muss auf jeder Plattform derselbe Dateiname verwendet werden. Er sollte ein gültiger Android-Ressourcenname sein (dh keine Leerzeichen und Sonderzeichen). Platzieren Sie Bilder mit Build Action: AndroidResource im Verzeichnis Resources/Drawable. Hoch- und Niedrig-DPI-Versionen eines Images können ebenfalls bereitgestellt werden (in entsprechend benannten Resources-Unterverzeichnissen wie z. B. drawable-ldpi, drawable-hdpi und drawable-xhdpi).

enter image description here

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

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

+1

Im UWP-Projekt ist es nicht die beste Lösung, alle Bilder im Stammordner zu behalten. Haben Sie eine andere Lösung, um die Bilder unter dem Unterordner zu behalten? Bitte beziehen Sie sich hier auf die Frage. http://stackoverflow.com/questions/37939758/xamarin-cross-platform-uwp-images-are-missing – Ashaar

2

Fügen Sie das Bild in Projektmappen-Explorer von Ressourcen/Drawable Ordner klicken und wählen Sie Neu/Bestehende item.please kopiere Bild nicht auf Ressourcen/Drawable Mappe. Ich hoffe, es hilft.

4

Wenn Sie bereit sind, Bilder hinzufügen Code, versuchen diese

heruntergeladen automatisch und zeigt das Bild

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