1
votes

Bogue ImageButton dans la vue de liste (va petit sur ajouter un élément)

J'ai créé une vue de liste avec le modèle d'élément et lorsque je clique sur Ajouter un bouton et que j'ajoute un élément à cette liste, les boutons d'image de ce modèle deviennent petits.

À quoi cela devrait ressembler https://drive.google.com/open?id=1e8BTXzPDhcbhsO7JqR

À quoi ça ressemble https://drive.google.com/open?id=1fHpveogjKiYLYbZE0Wahpah50hp >

Ma listeView:

<Image IsVisible="{Binding visible}" Source="deleteicon.png" Grid.Column="2" MinimumWidthRequest="30" WidthRequest="30" HorizontalOptions="Center"  BackgroundColor="Transparent">
                                                    <Image.GestureRecognizers>
                                                        <TapGestureRecognizer Tapped="DeleteD_Clicked" NumberOfTapsRequired="1"/>
                                                    </Image.GestureRecognizers>
                                                </Image>

Mon code de bouton d'ajout:

private void AddDButton_Clicked(object sender, EventArgs e)
{
     ItemD.Add(new SchamatListItem(){
        img = "eco.png",
        time = ItemD[ItemD.Count() - 1].time + TimeSpan.FromHours(1),
        visible = true,
        index = counterD
     });
     counterD++;
     ThisList.HeightRequest = ThisList.HeightRequest + 45;
}

MA SOLUTION strong> Je pense que ce n'est pas le meilleur mais ça marche.

<ListView x:Name="ThisList" HeightRequest="100" RowHeight="45">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="40"/>
                    </Grid.ColumnDefinitions>
                    <TimePicker  Grid.Column="0" HorizontalOptions="Center" FontFamily="{StaticResource MTBfont}" Time="{Binding time}"/>
                    <ImageButton Source="{Binding img}" Grid.Column="1" HorizontalOptions="Center" BackgroundColor="Transparent" Clicked="ProfileD_Clicked"/>
                    <ImageButton IsVisible="{Binding visible}" Source="deleteicon.png" Grid.Column="2" MinimumWidthRequest="30" WidthRequest="30" HorizontalOptions="Center"  BackgroundColor="Transparent" Clicked="DeleteD_Clicked"/>``
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Footer>
        <ImageButton Clicked="AddDButton_Clicked" Source="button_add.png" WidthRequest="50" VerticalOptions="Center" HorizontalOptions="Center" BackgroundColor="Transparent"/>
    </ListView.Footer>
</ListView>


4 commentaires

Ce ListView est dans le cadre et sous ce cadre est similaire avec ListView. Et quand j'ajoute un élément à partir du bouton, il ajoute mais le cadre ne fait pas plus grand - je ne veux pas avoir dans la barre de défilement de la liste, c'est pourquoi j'ajoute de la hauteur (cela fonctionne comme je le veux)


Je supprime l'ajout de cette hauteur et le dernier élément est à quoi cela devrait ressembler. reste encore un bug


OK, je le répare, et c'est stupide. Je change ImageButton en Image avec GestureRecograizer et le bogue n'existe plus


Veuillez partager votre solution pour répondre, cela aidera les autres qui ont un problème similaire.


3 Réponses :


0
votes

Vous pouvez également définir les VerticalOptions des ImageButtons sur Fill en ajoutant Aspect à AspectFit, et éventuellement en ajoutant une marge, comme ci-dessous:


1 commentaires

Je l'ai fait - effet de même.



1
votes

Essayez de supprimer la propriété de couleur d'arrière-plan du bouton d'image. C'est un bogue existant - https://github.com/xamarin/Xamarin.Forms/issues / 4510


0 commentaires

0
votes

MA SOLUTION Je pense que ce n'est pas la meilleure mais ça marche.

<Image IsVisible="{Binding visible}" Source="deleteicon.png" Grid.Column="2" MinimumWidthRequest="30" WidthRequest="30" HorizontalOptions="Center"  BackgroundColor="Transparent">
                                                    <Image.GestureRecognizers>
                                                        <TapGestureRecognizer Tapped="DeleteD_Clicked" NumberOfTapsRequired="1"/>
                                                    </Image.GestureRecognizers>
                                                </Image>


0 commentaires