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

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

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

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

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

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

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

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

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

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

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

У меня была эта проблема. Я устанавливаю 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 .

Ресурсы говорят:

Android поддерживает растровые файлы в трех форматах: .png (предпочтительно), .jpg (допустимо), .gif (обескуражен).

Сжимайте PNG и файлы JPEG :

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

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

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

Ссылки :

  1. Android: максимальная разрешенная ширина и высота растрового изображения

  2. Android: java.lang.OutOfMemoryError: не удалось выделить выделение байтов 23970828 с 2097152 бесплатными байтами и 2 МБ до тех пор, пока OOM

  3. Обработка растровых изображений

Для iOS

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

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

Intereting Posts
Как я могу позиционировать навигацию по списку действий на правой стороне? В playstore у нас есть два приложения с одинаковым именем с различным пакетом – Android Расширение ширины градиента centerColor в Android Показывать DialogFragment один раз и только один раз. Влияет ли Log.i () на производительность приложений Android? Выполнение javascript в фоновом режиме с использованием телефонной заставки Как я могу панорамировать веб-просмотр в google glass Ошибка: значение null в записи: blameLogFolder = null Панель действий Android – отключить меню опций Просмотр OpenGL внутри макета Относительная компоновка выравнивает элемент ниже и до середины другого элемента Есть ли способ определить класс протокола в Android? Как установить атрибут layout_weight динамически из кода? Sonar: Как использовать градлу для проверки проекта Android Robolectric 2.x + Maven на Jenkins не справился с зависимостями APKLIB