每个人都知道GridView不支持像ListView这样的页眉和页脚。
实现此目的有几种方法:
Space
填充最后一个单元格,并在它们之后手动插入页脚,其宽度等于GridView宽度。但这不适用于标题:虽然标题被拉伸,但下一个单元格会浮动它。扩展GridView并编写自定义类,允许在网格内容之前绘制标题。这很困难,但它应该非常快。让我们试着弄清楚如何做到这一点:
那你能建议我什么?怎么做标题偏移?每次滚动事件都调用relayout是正确的吗?
答案 0 :(得分:0)
我使用GridView
搜索了相同情况的答案(但对于FooterView
)。
我仔细阅读了您的建议以及其他网站的建议。我有同样的反思。我找到了一个简单的方法作为你的提示:“使用特殊适配器。它适用于页脚... ”和this answer by @RaulSoto对我帮助很大。但是当我尝试更新我的gridview时,我有一个NPE,因为我的页脚不像我的项目的布局而且我有一个自定义过滤器重新计算了getCount()方法,但是没有理解添加了另一个视图。
最后,我发现只有解决方案可行:自定义类。
创建您自己的类,如您所说:“扩展GridView并编写自定义类”但不扩展GridView。您应该使用ListView
进行扩展,并测量整个宽度,列宽和列数。我认为,扩展GridView,计算标题视图的高度并在移动gridview时移动它或在每次处理滚动事件时刷新标题都不那么困难。
我试图用这种方式做到这一点,我把这个小项目放在GitHub上:谢谢·伯里什的 HFGridView 。这正是我所需要的,不再是
我只在我的应用程序中添加了一个自定义的attrs文件,并自定义了他的项目以获得预期的结果(特别是,它有一个纵向列,两个处于横向模式,参考我的布局中的numColumns属性)。 />
当我尝试,只是为了测试,添加HeaderView
并通过添加新项目刷新内容时,标题视图保持在我的网格视图列表的顶部,而不刷新自己。
所以,我认为您应该搜索以GridView extends ListView
创建您的课程。请参阅SBurish的 HFGridView ,了解它是如何做的非常简单。
希望这可以帮助您达到目的。