5

我有一个带有 HeaderView 的 ListView。

我希望将其中的一个观点HeaderView放在首位。

我已经看到了很多关于粘性节标题的示例。

我还查看了StickyScrollViewItems但由于我使用的是 a ListView,所以我不能使用 a ScrollView

是否有可用的库,或者我应该覆盖OnScrollListenerListView

谢谢。

4

2 回答 2

1

我刚刚写了一大堆代码,出于承包商的原因我不能分享这些代码。基本上遵循此处概述的方法并应用于列表视图而不是滚动视图。

要点是

  1. 创建一个包装视图,其中包含您的浮动/粘性标题和您的列表视图作为兄弟姐妹
  2. 在添加带有 isSticky 布尔值的标题时使用代理方法 - 如果是粘性的,则将假的空白标题添加到相同大小的列表视图中,并将您的预期标题视图添加到浮动标题包装器(在此处使用相对布局)
  3. 设置列表视图的滚动侦听器,该侦听器跟踪列表中虚拟标题视图的顶部 px 位置,并将其设置为位于相对布局内的浮动标题的顶部边距
  4. 处理所有烦人的边缘情况/OEM过度滚动废话,使其在所有情况下都能正常工作(就像三星这样)

请记住在布局列表视图后设置浮动/固定标题的初始位置。

我觉得它有点参与,需要一些调整才能正确 - 这是我羡慕 iOS 的时候,任何 iOS 开发人员都会认为你的懈怠,因为它需要一段时间来实现:D

在撰写本文时,所有开放的库都使用滚动视图或列表视图标题。这些方法的问题是列表视图回收视图(因此与滚动视图不同,您不能只保留对虚拟视图的引用)并且当前库似乎使用适配器getView方法复制粘性视图等等 - 这对动态没有好处列出视图标题视图,因为它们没有被回收并且只能有一个父视图,因此重新设置父视图会很烦人(在我的情况下,它有很多功能,所以我不想创建两个相同类型的视图并将当前库硬塞到适合我的解决方案)

于 2013-11-25T12:11:37.903 回答
1

我不知道有什么库可以让你做到这一点,但我对标题所做的是将 aRelativeLayout用于我的 xml,它将具有ListView. 然后根据需要创建标题视图并为其提供属性

android:layout_alignParentTop="true"

然后给你ListView

android:layout_below="@id/idOfHeaderView

这是我所知道的将标题视图停靠在顶部的最简单方法。它每次都对我有用。我希望这有帮助。

于 2013-08-12T19:41:01.383 回答