Ich habe gerade eine Xamarin.Forms-Anwendung gestartet und möchte meiner XAML ein Hintergrundbild hinzufügen. Ich habe das Attribut hinzugefügt, aber es erscheint nicht, wenn ich es ausführen möchte. Hier sind die Bilder.
APP
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new Page();
}
XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="App1.Page"
BackgroundImage="bg.png">
SO, wie kann ich das beheben?
Fügen Sie Ihre bg.png
-Datei in jedes Ihrer nativen Projekte hinzu, da Sie derzeit einen Android-Emulator verwenden, und beginnen Sie mit Ihrem Xamarin.Android
-Projekt:
Android - Mit Build Action: AndroidResource können Sie Bilder in das Verzeichnis Resources/drawable stellen
ref: https://developer.xamarin.com/guides/xamarin-forms/working-with/images/
Beispiel: Fügen Sie in Ihrem Xamarin.Android
-Projekt bg.png
wie gezeigt hinzu:
Überprüfen Sie den Build Action
dieses Bildes und stellen Sie sicher, dass ihm AndroidResource
zugewiesen ist. Wiederherstellen und erneut testen.
In Xamarin.forms
Die Bilder sollten in den folgenden Ordnern abgelegt werden
iOS, Android - Resources folder
Windows/UWP, Windows Phone - Assets folder
Dann sollte die Build-Aktion (rt click img-> properties) der Bilder wie folgt geändert werden
iOS - BundleResource Windows Phone - Content
Android - AndroidResource Windows/UWP - Content
Wenn das Bild nicht angezeigt wird, ändern Sie das in Ausgabeverzeichnis kopieren, um es zu kopieren, falls es neu ist in den Bildeigenschaften
Wenn Sie ein Hintergrundbild in der XAML-Datei für die gesamte Seite des Xamarin-Projekts hinzufügen möchten, verwenden Sie die BackgroundImage-Eigenschaft, und fügen Sie Ihr Bild dem Android-Projekt unter Ressourcen -> drawable-Ordner und für iOS-Ressourcenordner hinzu.
<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>
Die Größe des Bildes zu reduzieren, funktionierte für mich.
Ein anderer Weg ( source ), den Sie dies erreichen können, besteht darin, die Build-Aktion des Images (in den Dateieigenschaften) als eingebettete Ressource festzulegen.
Mit einer Konverter-Markup-Erweiterung können Sie diese dann direkt in XAML verwenden und müssen die Dateien nicht in jedem plattformspezifischen Projekt kopieren oder verknüpfen.
Hier ist der Konverter, den Sie zu Ihrem tragbaren Projekt hinzufügen sollten:
[ContentProperty(nameof(Source))]
public class ImageResourceExtension : IMarkupExtension
{
static readonly Assembly CurrentAssembly =
typeof(ImageResourceExtension).GetType().Assembly;
public const string Assets = nameof(Assets);
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (string.IsNullOrWhiteSpace(Source))
return null;
// Do your translation lookup here, using whatever method you require
var source = $"{CurrentAssembly.GetName().Name}.{Assets}.{Source}";
var imageSource = ImageSource.FromResource(source, CurrentAssembly);
return imageSource;
}
}
Dann in deiner XAML:
<?xml version="1.0" encoding="UTF-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:WorkingWithImages;Assembly=WorkingWithImages"
x:Class="WorkingWithImages.EmbeddedImagesXaml">
<Image Source="{local:ImageResource Background.jpg}"}
</ContentPage>
Image-Dateien können zu jedem Anwendungsprojekt hinzugefügt und über den gemeinsam genutzten Code von Xamarin.Forms referenziert werden. Um ein einzelnes Bild für alle Apps verwenden zu können, muss auf jeder Plattform derselbe Dateiname verwendet werden. Es sollte ein gültiger Android-Ressourcenname sein (dh, es sind nur Kleinbuchstaben, Ziffern, Unterstrich und Punkt zulässig).
Weitere Informationen finden Sie unter Arbeiten mit Bildern Laden und Anzeigen von Bildern in Xamarin.Forms