Изображение в ListView не отображается только на Honor 7s Android Oreo 8.1 - PullRequest
0 голосов
/ 19 октября 2018

Я создал приложение Xamarin Forms 3.2 MVVM.Приложение позволяет снимать фото с камеры и показывать фотографии в ListView.

Настройки проекта Visual Studio Android:

Компиляция с использованием версии Android: Android 8.1 Oreo

Манифест Android:

  • Минимальная версия Android: Android 5.0 (уровень API 21)
  • Целевая версия Android: Android 8.1 (уровень API 27)

В поле зрения есть элемент управления ListViewс табличкой данных, которая показывает только текст и изображение.

    <ListView ItemsSource="{Binding Documents}"
              Grid.Row="0"
              Grid.ColumnSpan="3"
              RowHeight="200">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid Margin="5">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"></RowDefinition>
                            <RowDefinition Height="*"></RowDefinition>
                        </Grid.RowDefinitions>


                        <Label Grid.Row="0" Text="{Binding FileName}" HorizontalTextAlignment="Center"></Label>

                        <Image Source="{Binding Image}"
                               WidthRequest="100"
                               HeightRequest="100"
                               HorizontalOptions="Fill"
                               VerticalOptions="Fill"
                               Aspect="AspectFit" 
                               Grid.Row="1"/>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Я связываюсь с ListView ObservableCollection из ViewModel

public ObservableCollection<DocumentViewModel> Documents
{
    get => _documents;
    set
    {
        _documents = value;
        RaisePropertyChanged(nameof(Documents));
    }
}

DocumentViewModel класс

public class DocumentViewModel : BindableBase
    {
        #region Fields

        private readonly Document _model;

        #endregion

        #region Contructors

        public DocumentViewModel(Document model)
        {
            _model = model;


            Image = ImageSource.FromStream(() => new MemoryStream(model.Data));
            Name = model.Name;
            FileName = model.FileName;
        }

        #endregion

        #region Image

        private ImageSource _image;

        public ImageSource Image
        {
            get => _image;
            set
            {
                _image = value;
                RaisePropertyChanged(nameof(Image));
            }
        }

        #endregion

        #region Name

        private string _name;

        public string Name
        {
            get => _name;
            set
            {
                _name = value;
                RaisePropertyChanged(nameof(Name));
            }
        }

        #endregion

        #region FileName

        private string _fileName;

        public string FileName
        {
            get => _fileName;
            set
            {
                _fileName = value;
                RaisePropertyChanged(nameof(FileName));
            }
        }

        #endregion
    }

Класс модели документа

public class Document
{
    #region Properties

    public DateTime Created { get; set; }
    public string Name { get; set; }
    public string FileName { get; set; }
    public byte[] Data { get; set; }

    public int DocumentTypeId { get; set; }


    #endregion
}

Сначала я протестировал приложение в эмуляторе Android Genymotion (Samsung Galaxy S8 Android 8.0).

Работает хорошо.Вот результат.

enter image description here

Затем я протестировал приложение на Assus Z00UD Android 6.0.Это тоже работает.Вот результат.

enter image description here

Наконец я протестировал приложение на Android версии Honor 7s 8.1.

ListView не показывает изображения только текст.

enter image description here

Где может быть корень проблемы?Ошибка не отображается.Привязка к ObservableCollection работает, потому что текст метки не пустой.

Спасибо

...