Я разрабатывал элемент пользовательского интерфейса в Xamarin.Forms, который имеет свойства двух изображений. Сам элемент интерфейса не имеет изображения, поэтому я должен предоставить его извне.
Я пробовал много вещей, но это не работает. Наконец я сделал это с помощью изображений в проекте Android (в папке Resources \ drawable), но когда я меняю изображения, у меня появляется ошибка.
Throwing OutOfMemoryError "Failed to allocate a 20266212 byte allocation
with 12787592 free bytes and 12MB until OOM" load image from file
и мой код:
<StackLayout Grid.Row="1">
<customelements:CustomImageButton
x:Name="btnReadout"
ButtonText="Read"
ImageButton_Tapped="CustomImageButton_ImageButton_Tapped"
DisabledImageSource="read_disabled.png"
EnabledImageSource="read_enabled.png"
IsButtonActive="True"
/>
</StackLayout>
и в событии my bindable property я называю как
button.BackgroundImage = ImageSource.FromFile(enabledImageSource);
или
button.BackgroundImage = ImageSource.FromFile(disabledImageSource);
Если я несколько раз изменю свойство IsButtonActive, то получу исключение выше. Как я понимаю, он как-то не очищается из памяти и использует путь вместо прямого ресурса.
PS: ресурсы были настроены как ресурсы Android, и я использую реальное устройство, и размер изображения составляет 27 КБ