2017-09-27 2 views
0

Ich arbeite an Xamarin Formen, Cross-Plattform-App (Android und iOS). Ich wollte Hintergrundbild für das Login-Formular haben.Xamarin Formulare Hintergrundbild funktioniert nicht

ich es auf Konstruktor der Form und den Code festgelegt ist:

this.BackgroundImage = ImageSource.FromResource("PCLProjectName.Images.Login.loginbackground.png").ToString(); 

Und Bild ist im PCL-Projekt und ich habe seine Wirkung Eigenschaft als Embedded resource gesetzt.

PCL Projekt Ordnerhierarchie wie unten

Root 
- Images 
    - Login 
     -loginbackground.png 

Bild nicht angezeigt wird

Antwort

0

Für Bildern zu arbeiten, müssen sie in verschiedenen Ordnern in iOS und android platziert werden. Unterordner oder benutzerdefinierte Dateistrukturen können meines Wissens nicht verwendet werden.

Für Android-Geräte müssen Bilder im Android-Projekt unter Android>Resources>Drawable sein. Build action set to Android Resource (dieser Ordner sollte bereits vorhanden sein)

Für iOS-Geräte müssen Bilder im iOS-Projektordner iOS>Resources sein. Build Action auf Bundle Resource (Dieser Ordner sollte auch existieren bereits)

Mit den Bildern in den jeweiligen Ordnern, können Sie das Bild festlegen, wie so .. this.BackgroundImage = ImageSource.FromFile("loginbackground.png")

bearbeiten: Um mit Ihrem PCL Ressourcen Ansatz Embedded ..

Sie können diesen Code irgendwo ausführen, um zu sehen, dass die Bilder in den Ressourcen korrekt erkannt werden. Ich weiß aus Erfahrung, es gibt einige seltsame Datei ist Namensgebung Fragen (obwohl ich Sie nicht sehe ich in Ihrem Beispiel erlebt habe)

var assembly = typeof(EmbeddedImages).GetTypeInfo().Assembly; 
    foreach (var res in assembly.GetManifestResourceNames()) 
    System.Diagnostics.Debug.WriteLine("found resource: " + res); 
+0

Ich kenne diesen Ansatz, ich habe viele statische Bilder, also möchte ich es entsprechende Ordner legen, so dass es einfach zu verwalten ist. bitte überprüfen Sie diesen Link: https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/ eingebettete Bilder sind möglich – Mahajan344

+0

können Sie das Bild laden, wenn sie in den Stammordner Ihrer PCL gelegt? Warum wird '.ToString()' an die Bildzeile angehängt? – Bejasc

+0

@ Mahajan344 aktualisierte Antwort mit Code, der hilfreich sein kann. eine andere Sache zu versuchen Ich habe hier gesehen https://forums.xamarin.com/discussion/comment/95139/#Comment_95139 - Sie können in der Lage sein, es mit 'FromResource' zu ​​laden und den Dateinamen, ohne Ordner Verzeichnisse - obwohl Ich habe das selbst nicht versucht. – Bejasc

0

Wenn Sie Hintergrundbild in XAML-Datei für die gesamte Seite in Xamarin hinzufügen Projekt, dann verwenden Sie die BackgroundImage-Eigenschaft und fügen Sie Ihr Bild zum Android-Projekt unter Ressourcen -> Zeichnungsordner und für iOS-Ressourcen-Ordner.

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        xmlns:local="clr-namespace:PhoneDailerDemo" 
        x:Class="PhoneDailerDemo.MainPage" 
        BackgroundImage="image3.jpg"> 

      <Label Text="Welcome to Xamarin Forms!" 
        VerticalOptions="Center" 
        HorizontalOptions="Center" /> 
      <StackLayout Padding="100"> 
       //.......... 
      </StackLayout> 
    </ContentPage> 
Verwandte Themen