如何更改 ViewCell 中的高度
How Can I Change Height in ViewCell
我正在尝试更改 listview 上的 ViewCell,但下面的代码对我不起作用:
<DataTemplate>
<ViewCell Height="100">
<StackLayout Orientation="Horizontal">
<Image Source="{Binding Seller.Thumbnail}}" Aspect="AspectFit" />
<StackLayout Orientation="Vertical" >
<Label Text="{Binding CouponName}" FontAttributes="Bold" FontSize="12" />
<Label Text="{Binding EndOffer}" FontSize="11" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
Height / Weight 属性大部分是只读的Xamarin.You无法设置 ViewCell 的大小。
但是,您可以更改 StackLayout 的 HeightRequest 属性 来实现您想要的。
设置 ViewCell 的高度应该有效。
尝试将 StackLayout 的 VerticalOptions
和 HorizontalOptions
设置为 FillAndExpand
。
- 如果所有单元格的大小都相同,则设置
ListView.RowHeight
属性
ListView 本身
- 如果您想改为设置
ViewCell.Height
然后将 ListView.HasUnevenRows
设置为 true
(但它对性能有一些影响)
只需将 Grid 的 RowDefinition 的 Height 设置为 Auto,不管你的标签在哪里。像这样:
<ListView ItemsSource="{Binding Gastos}" HasUnevenRows="True" SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<Grid Padding="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Text="{Binding Id}" VerticalOptions="Start"/>
<Label Grid.Column="1" Text="{Binding Descripcion}" LineBreakMode="WordWrap"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
仅当 ListView.HasUnevenRows
或 TableView.HasUnevenRows
属性 设置为 true
时,为 ViewCell
设置 height
才有效。
2019年正确的现在放这个固定高度:
<ListView RowHeight="100" />
如果您不想固定所有行的高度,请使用:
<ListView HasUnevenRows="true" />
我正在尝试更改 listview 上的 ViewCell,但下面的代码对我不起作用:
<DataTemplate>
<ViewCell Height="100">
<StackLayout Orientation="Horizontal">
<Image Source="{Binding Seller.Thumbnail}}" Aspect="AspectFit" />
<StackLayout Orientation="Vertical" >
<Label Text="{Binding CouponName}" FontAttributes="Bold" FontSize="12" />
<Label Text="{Binding EndOffer}" FontSize="11" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
Height / Weight 属性大部分是只读的Xamarin.You无法设置 ViewCell 的大小。
但是,您可以更改 StackLayout 的 HeightRequest 属性 来实现您想要的。
设置 ViewCell 的高度应该有效。
尝试将 StackLayout 的 VerticalOptions
和 HorizontalOptions
设置为 FillAndExpand
。
- 如果所有单元格的大小都相同,则设置
ListView.RowHeight
属性 ListView 本身 - 如果您想改为设置
ViewCell.Height
然后将ListView.HasUnevenRows
设置为true
(但它对性能有一些影响)
只需将 Grid 的 RowDefinition 的 Height 设置为 Auto,不管你的标签在哪里。像这样:
<ListView ItemsSource="{Binding Gastos}" HasUnevenRows="True" SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell >
<Grid Padding="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Text="{Binding Id}" VerticalOptions="Start"/>
<Label Grid.Column="1" Text="{Binding Descripcion}" LineBreakMode="WordWrap"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
仅当 ListView.HasUnevenRows
或 TableView.HasUnevenRows
属性 设置为 true
时,为 ViewCell
设置 height
才有效。
2019年正确的现在放这个固定高度:
<ListView RowHeight="100" />
如果您不想固定所有行的高度,请使用:
<ListView HasUnevenRows="true" />