Почему Android обрабатывает загруженные изображения иначе, чем встроенные - PullRequest
0 голосов
/ 31 марта 2020

У меня 3 изображения. Они все круглые (на самом деле квадратные с прозрачным фоном) и все 3 имеют одинаковый размер.

Я ожидаю, что следующий xaml даст 3 похожих изображения, все растянуто до максимума хранения контейнера. их соотношение сторон из-за AspectFill.

Это прекрасно работает для UWP, но на Android кажется, что только первое изображение хочет услышать мои планы. Единственное отличие, которое я могу найти, состоит в том, что первое изображение является встроенным ресурсом, а другие изображения загружаются. (они не отображаются непосредственно из URL-адреса, но сначала сохраняются локально)

Если я отображаю только загруженные изображения, все они отображаются «маленькими». Если я отображаю только встроенные изображения, все они отображаются большими.

Мне кажется, что Android обрабатывает загруженные изображения по-разному при применении формата Aspect, чем встроенные изображения, но я не могу понять, почему.

    <ScrollView Orientation="Horizontal" HorizontalOptions="FillAndExpand">
        <Grid>
            <StackLayout x:Name="NarrationsStackLayout" BindableLayout.ItemsSource="{Binding Narrations}" Orientation="Horizontal" HorizontalOptions="CenterAndExpand" VerticalOptions="Fill">
                <BindableLayout.ItemTemplate>
                    <DataTemplate>
                        <Image Source="{Binding NarrationImage}" Aspect="AspectFill" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" BackgroundColor="Green"  >
                            <Image.GestureRecognizers>
                                <TapGestureRecognizer Command="{Binding TapCommand}" />
                            </Image.GestureRecognizers>
                        </Image>
                    </DataTemplate>
                </BindableLayout.ItemTemplate>
            </StackLayout>
        </Grid>
    </ScrollView>

Что может быть причиной такого поведения?

enter image description here

1 Ответ

0 голосов
/ 02 апреля 2020

С предложением Лео Чжу у меня есть подходящий способ решения моей проблемы, но я все еще озадачен причиной.

<StackLayout x:Name="NarrationsStackLayout" BindableLayout.ItemsSource="{Binding Narrations}" Orientation="Horizontal" HorizontalOptions="CenterAndExpand" VerticalOptions="Fill" Margin="0" Padding="0">
                    <BindableLayout.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding NarrationImage}" Aspect="AspectFill" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" BackgroundColor="Green" 
                                   HeightRequest="{Binding Source={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackLayout }}, Path=Height}"  
                                   WidthRequest="{Binding Source={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackLayout }}, Path=Height}">
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer Command="{Binding TapCommand}" />
                                </Image.GestureRecognizers>
                            </Image>
                        </DataTemplate>
                    </BindableLayout.ItemTemplate>
                </StackLayout>
...