如何在 listView 中设置行高的比例值,使其占据整个屏幕?

How do I set a proportional value for row height in a listView so it occupies the entire screen?

我需要 listView 中的项目具有高度,以便列表完全适合屏幕。下面是我的代码。我尝试将网格中行的高度设置为自定义值,但这会很好地适应某些设备的屏幕,而由于屏幕尺寸不同,其他设备中会出现空 space。

       <ListView  
              ItemsSource="{Binding PenStocks}"
              ItemSelected="Event_ItemSelected"
              ItemTapped="Event_ItemTapped"
              SeparatorVisibility="None"
              Margin="5,5,5,0"
              >
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid Padding="9" ColumnSpacing="0" RowSpacing="0" HorizontalOptions="FillAndExpand" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.408*"/>
                        <ColumnDefinition Width="0.051*"/>
                        <ColumnDefinition Width="0.252*"/>
                        <ColumnDefinition Width="0.033*"/>
                        <ColumnDefinition Width="0.153*"/>
                        <ColumnDefinition Width="0.102*"/>
                    </Grid.ColumnDefinitions>

我能为此做什么?请帮助我,谢谢!

如果你想让你的 listViewItem 伸展到它的内部控件的高度,你可以使用

<RowDefinition Height="Auto"/>

如果能分享一些截图就更好了

或者你可以看看下面的post:

我尝试在视单元内使用绝对布局,但当我这样做时,它也不起作用。

                               <AbsoluteLayout AbsoluteLayout.LayoutBounds="0,0,1,0.167" AbsoluteLayout.LayoutFlags="All">

编辑: 重写它以使用可绑定布局。

查看:

 <StackLayout x:Name="ParentFlexLayout" BindableLayout.ItemsSource="{Binding Colors}" HorizontalOptions="FillAndExpand" >
    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <Frame BackgroundColor="{Binding .}" VerticalOptions="FillAndExpand"/>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</StackLayout>

这里我们使用 bindablelayout - 它非常灵活,所以你可以随时使用它,看看它是否满足你的需求

代码隐藏:

  public ObservableCollection<Color> Colors { get; set; } = new ObservableCollection<Color>();
    public MainPage()
    {
        InitializeComponent();
        BindingContext = this;
        Colors.Add(Color.Blue);
        Colors.Add(Color.Red);
        Colors.Add(Color.Green);
        Colors.Add(Color.Yellow);
    }

结果: