Изображение Xamarin не отображается

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

<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

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

Ответ 2

Для других, кто может оказаться здесь...

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

Ответ 3

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

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

Ответ 4

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

ImageRenderer: Ошибка загрузки изображения: Java.Lang.OutOfMemoryError: Не удалось выделить выделение байтов 571513228 с 2140744 бесплатными байтами и 92 МБ до тех пор, пока OOM

Теперь попробовал

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

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

Примечание. "Объяснение вывода сборки проекта MSBuild" можно найти в разделе "Инструменты" → "Параметры" → "Проекты и решения" → "Сборка и запуск"

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

  • Прочитайте Локальные изображения
  • Убедитесь, что имя файла имеет только строчные алфавиты.
  • Добавьте этот файл png в папку Resources/drawable.

Создайте страницу содержимого следующим образом

<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 поддерживает растровые файлы в трех форматах:.png(предпочтительно),.jpg(приемлемый),.gif(обескуражен).

Сжатие PNG и файлов JPEG говорит:

Вы можете уменьшить размер файлов PNG без потери качества изображения с помощью таких инструментов, как pngcrush, pngquant или zopflipng. Все эти инструменты могут уменьшить размер файла PNG, сохранив при этом проницательное качество изображения.

Инструмент pngcrush особенно эффективен.

Чтобы сжать файлы JPEG, вы можете использовать такие инструменты, как packJPG и guetzli.

Ссылки:

Ответ 5

Для iOS

Шаг 1: Добавьте свое изображение в папку ios → Resources (если ее не создать)

Шаг 2; Изображение правой кнопки мыши → Свойства → Действие сборки → установлено как "Содержимое"