web-dev-qa-db-fra.com

L'image de Xamarin Forms ne s'affiche pas

J'ai une application Android Xamarin Forms (2.0) où j'essaie de montrer une image. J'ai une icône appelée icon-pages-r1.png que j'essaie de montrer en utilisant le code suivant:

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

L'image ne montre pas cependant. Quand je change la source en Icon.png (l'icône par défaut de Xamarin), cela fonctionne.

L’image est un fichier PNG semi-transparent (avec une icône colorée au centre et transparente autour de celui-ci), elle mesure 46 x 46 et sous Windows, elle affiche très bien le type d’élément Fichier PNG. J'ai essayé d'ouvrir l'image dans Paint et de la réenregistrer (ce qui supprime la transparence), mais cela ne fonctionne pas non plus. Le Build Action pour les images est AndroidResource avec Copy to Output Directory défini sur Do not copy.

Est-ce que quelqu'un sait pourquoi je ne parviens pas à afficher cette image dans mon application?

11
Leon Cullens

Vous ne pouvez pas utiliser de trait d'union dans les noms d'images pour Xamarin Android. Débarrassez-vous des traits d'union (à la fois dans le nom du fichier et dans la référence de l'image) et vous serez prêt.

18
DavidS

Pour les autres qui pourraient se retrouver ici ...

Assurez-vous que le fichier image fait réellement partie du projet (ressources\dessinable) et que l'action de génération est AndroidResource.

9
Jahmic

Lors de la liaison au nom d'une ressource image sous Android, j'ai découvert qu'il devait s'agir de:

  • dans le dossier Resources/Drawable
  • set Build Action: AndroidResource
  • définir Copy to Output: Ne pas copier
  • ne permet pas les traits d'un nom
  • le nom est sensible à la casse
5
Mike Benkovich

Pour iOS 

Étape 1: Ajoutez votre image dans ios -> Dossier des ressources (si ce n'est pas le créer)

Étape 2; Cliquez sur l'image -> Propriétés -> Action de construction -> Définir comme "Contenu"

1
Ranjith Kumar

J'ai eu ce problème.J'ai défini MSBuild project build output verbosity comme Diagnostic. Maintenant, j'ai trouvé ce qui suit dans ma fenêtre de sortie lorsque j'ai recherchéOOM.

ImageRenderer: erreur lors du chargement de l'image: Java.Lang.OutOfMemoryError: échec de l'allocation d'une allocation d'octets 571513228 avec 2140744 octets libres et 92 Mo jusqu'au MOO

Maintenant essayé

  • Créez une image png dont la taille est inférieure à 200 Ko taille et inférieure à 1400 X 1050 taille (à des fins de test). 

Cela a bien fonctionné.

Remarque: "La verbosité de sortie du projet MSBuild" se trouve sous Outils -> Options -> Projets et solutions -> Générer et exécuter

Points de contrôle généraux

  • Lire Images locales
  • Assurez-vous que le nom du fichier ne contient que des alphabets minuscules. 
  • Ajoutez ce fichier png dans le dossier Resources/drawable.

Créez une page de contenu comme suit

<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
    <Label Text="Pre" />
    <Image Source="abstracttriangleg.png"  
           Aspect="AspectFill" VerticalOptions="End" HorizontalOptions="CenterAndExpand"/>
    <Label Text="Post" />
</StackLayout>
  • Solution propre. 
  • Nettoyez les fichiers bin et Obj.

Ressources dit:

Android prend en charge les fichiers bitmap dans trois formats: .png (préféré), .jpg (acceptable), .gif (déconseillé).

Compresser les fichiers PNG et JPEG dit:

Vous pouvez réduire la taille des fichiers PNG sans perte de qualité d'image à l'aide d'outils tels que pngcrush, pngquant ou zopflipng. Tous ces outils peuvent réduire la taille du fichier PNG tout en préservant la qualité de l'image. 

L'outil pngcrush est particulièrement efficace.

Pour compresser des fichiers JPEG, vous pouvez utiliser des outils tels que packJPG et guetzli.

Références

  1. Android: Largeur et hauteur maximales autorisées de l'image bitmap

  2. Android: Java.lang.OutOfMemoryError: Échec d'attribution d'une allocation d'octets 23970828 avec 2097152 octets libres et 2 Mo jusqu'au MOO

  3. Gestion des bitmaps

0
Lijo