我有一个关于 Xamarin StackLayout 和 ListView 的问题。
我在 StackLayout 中使用 Listview。Listview 包含 10 个项目,很容易超出 stacklayout 的高度。对于 StackLayout ,我使用了 OrientationVertical
和 VerticalOptions 。FillAndExpand
没有导航标题栏时,StackLayout 会正确展开。问题是当有导航标题栏时,Stacklayout 没有正确展开并且 Listview 项目正在缩小。还有其他人面临这个问题吗?
<ContentPage.Content>
<StackLayout>
<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" >
<ListView
HasUnevenRows="True"
ItemsSource="{Binding sampleList}"
CachingStrategy="RecycleElement">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<views:sampleView/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</StackLayout>
</ContentPage.Content>
我尝试了以下提到的选项。
1)将高度请求设置为父堆栈布局。
它适用于某些设备,但不适用于某些设备。
2) 通过设置如下所示的 Grid 行定义来使用 Grid 而不是 StackLayout。
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
但这种变化也没有解决问题。
3) 使用 Scroll View 而不是 StackLayout
这将起作用。但 Xamarin 建议我们不应将 ScrollView 与其他提供滚动的控件嵌套,如 ListView 和 WebView。(https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/scroll-view)