Xamarin Forms - 两个堆叠的 ListView

Xamarin Forms - Two ListViews Stacked

我有一个简单的内容页面,我希望它有两个 ListView。我希望 ListView 堆叠在一起。

如果我将它们添加为 StackPannel 的一部分,则每个 ListView 垂直占据视图的一半。但是,我希望第一个(顶部)ListView 在滚动时一直展开,然后拾取第二个 ListView。所以基本上 View 的高度需要是每个 ListView 组合的高度。

我可以通过 1 个 ListView 完成此操作并只进行分组,但在这种情况下,我想要两个完全垂直展开的独立 ListView。

实现这个的技巧是什么?我应该使用 ScrollView 元素吗?

免责声明:不建议在 ScrollView 中使用 ListView。

回答:是的,使用 ScrollView 但是(在投票前继续阅读下面的内容)您必须处理 Scroll 的影响(至少在 iOS 上)。

Xamarin 的人在 Evolve 16 应用程序中做到了这一点(来源:https://github.com/xamarinhq/app-evolve

基本上(根据我的理解),您需要执行以下步骤:

  1. NonScrollableListView。在 Android 上,它与调节器 Listview 相同。在 iOS 上,它将 ListView 的滚动设置为 false(因此,它不会干扰 ScrollView)。
  2. AlwaysScrollView。同样,在 Android 上,它只是一个普通的 ScrollView。在 iOS 上,它将 AlwaysBounceVertical 设置为 true。

我不确定我是否足够清楚。让我知道。 :)

[编辑 ~ 重要通知!] 只是说清楚:在 ScrollView 中使用 ListView 将使 ListView 在页面加载后加载整个集合,为集合中的每个项目创建一个 ViewCell。这意味着:如果您有一个包含 40 个项目的 Collection,ListView 将创建 40 个 ViewCell 的实例,而 CachingStrategy 无关紧要。性能下降在 Andriod 上最为明显。因此,如果您不控制集合中的项目数量,请注意这可能会严重影响性能。