Xaml 表单中心列表视图项
如何在Xamarin.Forms应用程序中居中显示listview项目? listview项当前是左对齐的。 我想让它们居中对齐 我有以下代码:Xaml 表单中心列表视图项,xaml,xamarin.forms,Xaml,Xamarin.forms,如何在Xamarin.Forms应用程序中居中显示listview项目? listview项当前是左对齐的。 我想让它们居中对齐 我有以下代码: <ListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Results}" HorizontalOptions="Center"> <ListView.ItemTemplate> <DataTemplate&g
<ListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Results}" HorizontalOptions="Center">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<Grid HorizontalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" />
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" />
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
也许这样:
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" HorizontalOptions="Center"/>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" HorizontalOptions="Center"/>
编辑:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" HorizontalOptions="Center"/>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" HorizontalOptions="Center"/>
也许这样:
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" HorizontalOptions="Center"/>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" HorizontalOptions="Center"/>
编辑:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" HorizontalOptions="Center"/>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" HorizontalOptions="Center"/>
没有实际尝试过 您的单元格视图是
,但网格本身已展开以适合单元格,因此水平选项
不重要
你需要在网格中放置一个二级容器,它将居中,
比如:
<ViewCell.View>
<Grid>
<StackPanel Orientation="Horizontal" HorizontalOptions="Center">
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" />
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" />
</StackPanel>
</Grid>
</ViewCell.View>
您还可以尝试(如果上述操作不起作用)将3列(以及3行用于垂直对齐)添加到大小为(自动)-(*)-(自动)的网格中,并将StackPanel放在中心单元格中。,而无需实际尝试 您的单元格视图是
,但网格本身已展开以适合单元格,因此水平选项
不重要
你需要在网格中放置一个二级容器,它将居中,
比如:
<ViewCell.View>
<Grid>
<StackPanel Orientation="Horizontal" HorizontalOptions="Center">
<Label Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" />
<Label Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" />
</StackPanel>
</Grid>
</ViewCell.View>
您还可以尝试(如果上述操作不起作用)向网格中添加3列(和3行用于垂直对齐),大小为(自动)-(*)-(自动),并将StackPanel放在中心单元格中。Scott网格始终会扩展以占据100%的可用空间。就我所知,没有办法覆盖它,即使在网格上显式设置widthrequest似乎也没有帮助 我假设您有一个更大的布局要求,您试图满足,因为在listView中以名字和姓氏为中心,最好使用Stacklayout而不是网格来完成。 即
但是假设你真的需要一个网格,那么我只能为Tomasz的建议增加一个
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding FirstName}" HorizontalOptions="End"/>
<Label Grid.Row="0" Grid.Column="2" Text="{Binding LastName}" />
</Grid>
这会在外部创建两列以占用空间,迫使名称位于中间。网格始终会扩展以占据100%的可用空间。就我所知,没有办法覆盖它,即使在网格上显式设置widthrequest似乎也没有帮助 我假设您有一个更大的布局要求,您试图满足,因为在listView中以名字和姓氏为中心,最好使用Stacklayout而不是网格来完成。 即
但是假设你真的需要一个网格,那么我只能为Tomasz的建议增加一个
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="1" Text="{Binding FirstName}" HorizontalOptions="End"/>
<Label Grid.Row="0" Grid.Column="2" Text="{Binding LastName}" />
</Grid>
这将在外部创建两列,以占用空间,迫使名称位于中间。只需在标签上添加HorizontalOptions=“Center”就可以了,祝我好运
<ListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Results}" HorizontalOptions="Center">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<Grid HorizontalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Label HorizontalOptions="Center" Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" />
<Label HorizontalOptions="Center" Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" />
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
只需在标签上添加horizontalpoptions=“Center”就行了,祝我好运
<ListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Results}" HorizontalOptions="Center">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<Grid HorizontalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Label HorizontalOptions="Center" Grid.Row="0" Grid.Column="0" Text="{Binding FirstName}" />
<Label HorizontalOptions="Center" Grid.Row="0" Grid.Column="1" Text="{Binding LastName}" />
</Grid>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这没有用,因为两列的大小都是“自动”的,所以第一列的大小总是第一个名称标签的大小,第二列的大小是其余的。这没有用,因为两列的大小都是“自动”的,所以第一列的大小总是第一个名称标签的大小,第二列的大小是其余的。