wake-up-neo.com

Xamarin Forms-Bild wird nicht angezeigt

Ich habe eine Xamarin Forms (2.0) Android-App, in der ich versuche, ein Bild anzuzeigen. Ich habe ein Symbol mit dem Namen icon-pages-r1.png, das ich mit dem folgenden Code anzeigen möchte:

<Image Source="icon-pages-r1.png" />

Das Bild wird jedoch nicht angezeigt. Wenn ich die Quelle auf Icon.png (das Standard-Xamarin-Symbol) ändere, funktioniert es.

Das Bild ist ein semitransparentes PNG-Bild (also ein farbiges Symbol in der Mitte und um dieses herum transparent), hat eine Größe von 46 x 46 und wird in Windows als PNG-Datei des Elementtyps angezeigt. Ich habe versucht, das Bild in Paint zu öffnen und erneut zu speichern (was die Transparenz zerstört), aber das funktioniert auch nicht. Der Build Action für die Bilder ist AndroidResource, wobei Copy to Output Directory auf Do not copy gesetzt ist.

Weiß jemand, warum ich dieses Bild nicht in meiner App anzeigen kann?

11
Leon Cullens

Sie können für Xamarin Android keine Bindestriche in Bildnamen verwenden. Wenn Sie die Bindestriche (sowohl im Dateinamen als auch in der Bildreferenz) entfernen, werden Sie festgelegt.

18
DavidS

Für andere, die vielleicht hier landen ...

Stellen Sie sicher, dass die Bilddatei tatsächlich Teil des Projekts ist (Resources\drawable) und dass die Erstellungsaktion AndroidResource ist.

9
Jahmic

Beim Binden an den Namen einer Bildressource in Android wurde Folgendes festgestellt:

  • im Ordner Resources/Drawable
  • setze Build Action: AndroidResource
  • auf Ausgabe kopieren einstellen: Nicht kopieren
  • erlaubt keine Bindestriche im Namen
  • der Name unterscheidet zwischen Groß- und Kleinschreibung
5
Mike Benkovich

Für iOS

Schritt 1: Fügen Sie Ihr Bild in ios -> Ressourcen-Ordner (Wenn es nicht erstellt wird)

Schritt 2; Bild rechtsklicken -> Eigenschaften -> Aktion erstellen -> als "Inhalt" festlegen

1
Ranjith Kumar

Ich hatte dieses Problem. Ich habe MSBuild project build output verbosity als Diagnostic festgelegt. Jetzt habe ich Folgendes in meinem Ausgabefenster gefunden, als ich nachOOMgesucht habe.

ImageRenderer: Fehler beim Laden des Bildes: java.lang.OutOfMemoryError: Es konnte keine 571513228 Byte-Zuordnung mit 2140744 freien Bytes und 92MB bis OOM zuzuteilen

Jetzt probiert

  • Erstellen Sie ein png-Image mit weniger als 200 KB size und weniger als 1400 X 1050 size (zu Testzwecken).

Es hat gut funktioniert.

Hinweis: "Ausführlichkeit der MSBuild-Projekterstellung" finden Sie unter Extras -> Optionen -> Projekte und Lösungen -> Erstellen und Ausführen

Allgemeine Checkpoints

  • Lesen Lokale Bilder
  • Stellen Sie sicher, dass der Dateiname nur Kleinbuchstaben enthält.
  • Fügen Sie diese PNG-Datei in den Ordner Resources/drawable ein.

Erstellen Sie eine Inhaltsseite wie folgt

<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
    <Label Text="Pre" />
    <Image Source="abstracttriangleg.png"  
           Aspect="AspectFill" VerticalOptions="End" HorizontalOptions="CenterAndExpand"/>
    <Label Text="Post" />
</StackLayout>
  • Saubere Lösung.
  • Bereinigen Sie die Dateien bin und Obj.

Ressourcen sagt:

Android unterstützt Bitmap-Dateien in drei Formaten: .png (bevorzugt), .jpg (akzeptabel), .gif (nicht empfohlen).

PNG- und JPEG-Dateien komprimieren sagt:

Sie können die Größe von PNG-Dateien mit Tools wie pngcrush, pngquant oder zopflipng reduzieren, ohne die Bildqualität zu beeinträchtigen. Alle diese Tools können die Größe von PNG-Dateien verringern und gleichzeitig die wahrnehmbare Bildqualität erhalten.

Das Pngcrush-Tool ist besonders effektiv.

Zum Komprimieren von JPEG-Dateien können Sie Tools wie packJPG und guetzli verwenden.

Referenzen :

  1. Android: Maximal zulässige Breite und Höhe der Bitmap

  2. Android: Java.lang.OutOfMemoryError: Fehler beim Zuweisen einer 23970828-Byte-Zuordnung mit 2097152 freien Bytes und 2 MB bis OOM

  3. Umgang mit Bitmaps

0
Lijo