listviewxamarinxamarin.formslistviewitemxamarin.forms.listview

How to display a text with different length inside a list view with different width in xamarin forms


I have a list contains logs and each log have a different size. for example the first log contains fifty character and next contains 500 characters I need to display whole 500 characters inside a list view item template.

Please find the code snippet as follows:-

<controls:CustomListView SeparatorVisibility="None"
                        ItemsSource="{Binding LogContentList}" 
                        Style="{StaticResource ListViewStyle}" SelectionMode="None" AutomationId="LogContentLabel">
                        <ListView.ItemTemplate>
                            <DataTemplate x:DataType="wrappers:LogContentWrapperModel">
                                <ViewCell>
                                    <Grid VerticalOptions="FillAndExpand">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="*"/>
                                            <RowDefinition Height="1"/>
                                        </Grid.RowDefinitions>
                                        <Label Grid.Row="0"  Padding="10,5,10,5" Text="{Binding Content}" FontSize="{StaticResource FontSizeMedium}"
                                                TextColor="{StaticResource FiordColor}" MaxLines="10" HorizontalTextAlignment="Start" HorizontalOptions="CenterAndExpand"/>
                                        <BoxView Grid.Row="1" Color="Black" HeightRequest="1" HorizontalOptions="FillAndExpand" VerticalOptions="End"/>
                                    </Grid>
                                </ViewCell>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </controls:CustomListView>

I just need to display whole logs inside a listview ViewCell but all the cells contain the same width and I am not able to view the entire log text.


Solution

  • To allow some list items to have multiple lines you schould try:

    <ListView HasUnevenRows="True">
    ...
    <RowDefinition Height="Auto"/>
    ...
    <Label LineBreakMode="WordWrap"/>