我正在尝试解决我的Xamarin.Forms应用程序中的一些布局问题。例如,当内容的高度高于主体内容高度时,列表将崩溃。
我有自定义项目模板的未定义数量的列表。我希望保持每个列表的所有高度,并有可能滚动它们。
我尝试使用StackLayout,但它不支持滚动。当我使用ScrollView时,Auto属性无法正常工作(每个列表之间存在空间)。
我的代码看起来像这样:
<Grid>
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0"> //Header
...
</Grid>
<StackLayout Grid.Row="1"> //Group of lists
<ListView x:Name="firstList" ItemTemplate="..." ItemsSource="...">
</ListView>
<ListView x:Name="secondList" ItemTemplate="..." ItemsSource="...">
</ListView>
...
</StackLayout>
</Grid>
如何在全高度上放置这些列表?
从移动应用程序的角度来看,您尝试实现的目标非常模糊。反过来说:当你的屏幕充满堆叠的ListView
s时,系统如何知道它必须向下滚动页面或向下滚动当前的ListView
?
将ListView嵌套到ScrollView中也是一种非常糟糕的做法,因为:
ListView
实现了自己的滚动。ListView
不会收到任何手势 - >它们将由父ScrollView处理。ListView
也可以使用列表元素滚动自定义页眉和页脚,可能提供ScrollView用于的功能。如果您想坚持这种布局,那么您的选择是使用自定义渲染器设计您自己的控件实现并管理手势。
希望它有帮助,编码愉快!