0
votes

Im facing a real strange problem, I am developing a xamarin forms app, let me show you the problem:

  1. So I have this listview with items. click here to see the list

  2. Then i tapped an item, and this fires a Navigation.PushAsync to this page

  3. Then, when i go back to the list, The image size has changed, watch this image

I have tried change the list view to a collection view but the problem is the same. Im deploying this app on android

This is the xaml code

                <StackLayout Margin="10,0,10,0">
                <ListView x:Name="lvResultadoBusqueda" SelectionMode="Single"  ItemSelected="lvResultadoBusqueda_ItemSelected" ItemTapped="lvResultadoBusqueda_ItemTapped" HasUnevenRows="True">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ViewCell>
                                <Grid  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="#FFFFFF" Padding="0,5,0,5">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="50"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="15"/>
                                        <RowDefinition Height="15"/>
                                        <RowDefinition Height="15"/>
                                        <RowDefinition Height="10"/>
                                    </Grid.RowDefinitions>
                                    <Frame Padding="0" OutlineColor="#E4E7EC" HasShadow="True" Grid.RowSpan="4" Grid.Column="0">
                                        <Image Source="{Binding urlImagenPortada}" Aspect="Fill"></Image>
                                    </Frame>
                                    <Label Text="{Binding titulo}" Grid.Row="0" Grid.Column="1" FontSize="14" TextColor="#000000" FontAttributes="Bold"></Label>
                                    <Label Text="{Binding autores}" FontSize="12" Grid.Row="1" Grid.Column="1" TextColor="#868b8f"></Label>
                                    <StackLayout Grid.Row="2" Grid.Column="1" Orientation="Horizontal" Spacing="5" BackgroundColor="Transparent">
                                        <Label Text="{Binding valoracionExacta}" FontSize="12" TextColor="#868b8f" BackgroundColor="Transparent"></Label>
                                        <Image Source="star_blue.png" WidthRequest="10" HeightRequest="10"  Margin="0,4,0,0"></Image>
                                    </StackLayout>
                                </Grid>
                            </ViewCell>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackLayout>

and this is the c# code

        private void lvResultadoBusqueda_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        ListView listView = (ListView)sender;
        listView.SelectedItem = null;
    }

    private void lvResultadoBusqueda_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        var item = e.Item as BuscarCatalogoVM;
        if (item != null)
        {
            Navigation.PushAsync(new Catalogo.DetalleCatalogo(item.idRepositorioDigital));
        }
    }

I really hope you can help me, thanks !

UPDATE 1: I tried what Ryan told me:

    <Frame Padding="0" OutlineColor="#E4E7EC" HasShadow="True" Grid.RowSpan="4" Grid.Column="0">
            <Image Source="{Binding urlImagenPortada}" Aspect="AspectFit" HorizontalOptions="FillAndExpand"></Image>
     </Frame>

And this is the screenshot :C

UPDATE 2: With the FFImageLoading plugin, I dont have that problem, it works great, but it seems that the DownsampleToViewSize property is not working, when I set it to true, the image does not fit , So I have to put it false and add Aspect="Fill" or Aspect="AspectFill", but this solutions cuts the image of the book

2

2 Answers

0
votes

Friend from Peru Try using Xamarin.FFImageLoading.Forms https://askxammy.com/optimizing-handling-images-with-ffimageloading/ Also I share this link for the management of transitions. https://geeks.ms/jsuarez/2019/05/29/xamarin-forms-ui-challenge-art-news-transiciones-entre-paginas/

You can share the code in git and I'm debugging the project to try to help you.

0
votes
  <Frame Padding="0" OutlineColor="#E4E7EC" HasShadow="True" Grid.RowSpan="4" Grid.Column="0">
        <Image Source="{Binding urlImagenPortada}" Aspect="AspectFill" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"></Image>
  </Frame>

add HorizontalOptions="FillAndExpand" and VerticalOptions="FillAndExpand"