2016-03-02 4 views
11

У меня есть приложение Xamarin Forms (2.0), в котором я пытаюсь показать изображение. У меня есть значок под названием icon-pages-r1.png, которую я пытаюсь показать, используя следующий код:Xamarin Forms изображение не отображается

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

Изображение не отображается, хотя. Когда я меняю источник на Icon.png (значок Xamarin по умолчанию), он работает.

Изображение представляет собой полупрозрачный PNG (таким образом, цветной значок посередине и прозрачный вокруг него), это 46x46, а в Windows он отлично выглядит как PNG-файл. Я попытался открыть изображение в Paint и повторно сохранить его (что убивает прозрачность), но это тоже не работает. Build Action для изображений AndroidResource с Copy to Output Directory установлен на Do not copy.

Кто-нибудь знает, почему я не могу получить это изображение для показа в своем приложении?

+1

В Ресурсах/возможно? Вы также можете попробовать очистить свое решение и вручную разблокировать папки bin и obj. Иногда это помогает. – Jason

+0

Где определено действие сборки? – nishantvodoo

+0

@ keanu101 вы можете установить его, перейдя к свойствам объекта (rightclick в решении explorer -> свойства). –

ответ

18

Вы не можете использовать дефисы в именах изображений для Xamarin Android. Избавьтесь от дефиса (как в имени файла, так и в ссылке на изображение), и вы будете установлены.

+3

Ух, это была проблема. Черт, я потратил время, чтобы выяснить это глупое недокументированное правило. Совет другим: перейдите к инструментам -> параметры -> проекты и решения -> построите и запустите -> MSBuild project build output verbosity -> установите его как «нормальный», а не «минимальный». Это фактически покажет это как ошибку в выходе. –

+1

«Нормальный» не разрезал для меня. Мне пришлось установить его в «Диагностика», пока мне не удалось увидеть ошибки, связанные с PNG. –

8

Для тех, кто может в конечном итоге здесь ...

Убедитесь, что файл изображения на самом деле является частью проекта (Resources \ рисуемых) и что действие сборки AndroidResource.

4

При привязке к наименованию ресурса изображения в андроида я нашел, что это должно быть:

  • в разделе Ресурсов/Drawable папки
  • набора Build Action: AndroidResource
  • набора Копирование на выход: Не копия
  • не позволяет дефис в имени
  • имя чувствительно к регистру
0

У меня был этот выпуск.I комплект MSBuild project build output verbosity как Diagnostic. Теперь я нашел следующее в окне «Выход», когда искал OOM.

ImageRenderer: Error loading image: Java.Lang.OutOfMemoryError: Failed to allocate a 571513228 byte allocation with 2140744 free bytes and 92MB until OOM

Сейчас попробовал

  • Создать png изображение, которое имеет менее чем 200KB размер и меньше, чем 1400 X 1050 размер (для целей тестирования).

Он работал нормально.

Примечание: "Проект MSBuild вывод сборки многословие" можно найти в разделе Сервис -> Параметры -> Проекты и Решения -> Создание и выполнение

Общие Контрольные точки

  • Read Local Images
  • Убедитесь, что имя файла имеет только строчные алфавиты.
  • Добавьте этот файл png в папку Ресурсы/выталкиваемая.

Создать страницу оглавления

<StackLayout VerticalOptions="Center" HorizontalOptions="Center"> 
    <Label Text="Pre" /> 
    <Image Source="abstracttriangleg.png" 
      Aspect="AspectFill" VerticalOptions="End" HorizontalOptions="CenterAndExpand"/> 
    <Label Text="Post" /> 
</StackLayout> 
  • чистого раствора.
  • Очистить bin и Obj.

Resources говорит:

Android supports bitmap files in three formats: .png (preferred), .jpg (acceptable), .gif (discouraged).

Compress PNG and JPEG files говорит:

You can reduce PNG file sizes without losing image quality using tools like pngcrush, pngquant, or zopflipng. All of these tools can reduce PNG file size while preserving the perceptive image quality.

The pngcrush tool is particularly effective.

To compress JPEG files, you can use tools like packJPG and guetzli.

Ссылки:

  1. Android : Maximum allowed width & height of bitmap

  2. Android:java.lang.OutOfMemoryError: Failed to allocate a 23970828 byte allocation with 2097152 free bytes and 2MB until OOM

  3. Handling Bitmaps

+0

Дополнительная ссылка: [Эффективная загрузка больших растровых изображений] (https://developer.android.com/topic/performance/graphics/load-bitmap.html) и [Эффективная загрузка больших растровых изображений] (https://developer.xamarin.com/рецепты/Android/ресурсы/общие/load_large_bitmaps_efficiently /) – Lijo

0

Для прошивкой

Шаг 1: Добавить изображение в ИСН -> папка ресурсов (если не создать его)

Шаг 2; Щелкните правой кнопкой мыши изображение -> Свойства -> Создать действие -> установить как «Содержимое»