You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms中ListView显示异常问题求助

解决ScrollView嵌套ListView的显示问题

你的核心问题是ScrollView和ListView嵌套使用——这两个都是可滚动控件,嵌套后会导致ListView无法正确计算自身高度,出现显示错乱(比如行高异常、内容挤压等)。直接按下面的方案修改即可:

修复步骤

  • 移除外层的ScrollView:ListView本身自带垂直滚动功能,不需要额外包裹ScrollView,这是问题的根源。
  • 调整ListView的布局参数,让它直接填充父容器空间。
  • 可选优化:将Grid的行高从1*改为Auto,让行高自适应内容,避免多余空白。

修改后的完整XAML代码

<ListView x:Name="listViewm" 
          ItemsSource="{Binding MySource}"
          VerticalOptions="FillAndExpand" 
          HorizontalOptions="FillAndExpand" 
          Margin="20,0,20,0">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid BackgroundColor="LightGray" Padding="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="1*" />
                        <ColumnDefinition Width="1*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <Label Grid.Column="0" Grid.Row="0" 
                           Text="{Binding x}" 
                           VerticalOptions="FillAndExpand" 
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                    <Label Grid.Column="1" Grid.Row="0" 
                           Text="x" 
                           VerticalOptions="FillAndExpand"  
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                    <Label Grid.Column="1" Grid.Row="1" 
                           Text="y" 
                           VerticalOptions="FillAndExpand" 
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                    <Label Grid.Column="0" Grid.Row="1" 
                           Text="{Binding y}" 
                           VerticalOptions="FillAndExpand" 
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                    <Label Grid.Column="1" Grid.Row="2" 
                           Text="z" 
                           VerticalOptions="FillAndExpand" 
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                    <Label Grid.Column="0" Grid.Row="2" 
                           Text="{Binding z}" 
                           VerticalOptions="FillAndExpand" 
                           HorizontalOptions="FillAndExpand" 
                           BackgroundColor="#E9EDF2" 
                           TextColor="Black" 
                           HorizontalTextAlignment="Center" 
                           Margin="1"/>
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

补充说明

如果你的页面确实需要混合其他非滚动内容,建议将ListView和其他内容放在同一个布局容器(比如StackLayout)里,而不是用ScrollView包裹整个ListView。这样既能保留ListView的虚拟化性能,又能正常显示所有内容。

内容的提问来源于stack exchange,提问作者Naifar Sirine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:47