多个列表视图-所有视图的自动高度

时间:2019-04-18 11:02:48

标签: c# android .net xamarin

我正在尝试解决Xamarin.Forms应用程序中的一些布局问题。例如,当内容的高度高于正文的高度时,列表将折叠。

我的自定义项目模板列表数量不确定。我想保持每个列表的高度,并有可能滚动它们。

我尝试使用StackLayout,但是它不支持滚动。当我使用ScrollView时,“自动”属性无法正常工作(每个列表之间都有很大的空间)。

我的代码如下:

<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>

如何将这些列表放在全高?

1 个答案:

答案 0 :(得分:1)

从移动应用程序的角度来看,您试图实现的目标非常模糊。换个角度思考:当屏幕上堆满了ListView时,系统如何知道它必须向下滚动页面或向下滚动当前的ListView

将ListView嵌套到ScrollView中也是一个很糟糕的做法,因为:

  1. ListView实现自己的滚动。

  2. ListView将不会收到任何手势->它们将由父级ScrollView处理。

  3. ListView还可具有自定义的页眉和页脚,可与列表的元素一起滚动,从而可能提供ScrollView所使用的功能。

如果要坚持这种布局,这里的选择是使用自定义渲染器设计自己的控件实现并管理手势。

希望它对您有帮助并且编码愉快!