如何在 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);
}
结果:
我需要 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);
}
结果: