Android 不同单元格大小的gridView,pinterest样式 背景
是一个扩展类,这意味着它以网格样式高效地显示单元格,循环使用旧视图,在用户滚动时显示为新视图 问题 有时,您可能希望获得一个特殊的用户界面,它类似于Windows Phone Tiles用户界面,具有大小不同的单元格 大概是这样的:Android 不同单元格大小的gridView,pinterest样式 背景,android,android-gridview,cells,android-adapterview,android-gridlayout,Android,Android Gridview,Cells,Android Adapterview,Android Gridlayout,是一个扩展类,这意味着它以网格样式高效地显示单元格,循环使用旧视图,在用户滚动时显示为新视图 问题 有时,您可能希望获得一个特殊的用户界面,它类似于Windows Phone Tiles用户界面,具有大小不同的单元格 大概是这样的: AABB AACC AADD AADD 每个字母代表其单元格的一部分,因此单元格a为2x4,单元格B和单元格C各取2x1,单元格D为2x2 它可能比这还要多,单元格D比我所展示的稍高一点,在它的正下方有另一个单元格,所以D的末端和a的末端不必对齐 具有此样式的应用
AABB
AACC
AADD
AADD
每个字母代表其单元格的一部分,因此单元格a为2x4,单元格B和单元格C各取2x1,单元格D为2x2
它可能比这还要多,单元格D比我所展示的稍高一点,在它的正下方有另一个单元格,所以D的末端和a的末端不必对齐
具有此样式的应用程序示例如下
GridView不允许这样的事情
事实上,我尝试过的每个解决方案都有问题。我想问一下,是否还有其他替代方案或更好的解决方案
我发现了什么
有多种方法可以处理此问题:
编辑:我认为关于StaggedGridView,滚动和异常可以通过使用普通的ImageView来解决,您可以在getView中设置它的大小。我认为它以一种奇怪的方式工作的原因是,该示例在从internet加载imageview后更新了它的大小 然而,空单元格问题仍然存在于该库中。不仅如此,即使不改变方向,它们的大小也会发生很大的变化
编辑:目前,我认为最好的解决方案是使用 我找不到任何问题 但是,它不能使项目占用超过1个单元格宽度。不过还是很好
编辑:遗憾的是,它与notifyDataSetChanged存在问题。我已经报道过了。您可以通过一个列表视图来实现这一点,其中每个单元格包含一个不同的网格模板。我用这个技巧做了一些类似于你所描述的事情。如果单元格大小需要唯一,这将不起作用,但对于您描述的情况来说应该足够了:
AABB
AACC
AADD
AADD
创建少量类似这样的模板,使用a、B、C、D的各种排列,然后您可以将它们随机用作ListView单元格,通过一些简单的偏移数学,您的适配器可以填充每个子单元格,以完成如下操作:
AABB
AACC
AADD
AADD
BBBB
ACCC
ADDD
ADDD
AAAA
BBCC
BBCC
DDDD
AABB
AACC
AADD
AADD
AABB
AACC
DDDD
DDDD
现在回答有点晚吗 从etsy查看此库。 看起来很有希望 我认为这是新版本的 更新 试着使用谷歌的
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(adapter);
我认为一个with可以解决这个问题,如果你想拥有一个快速滚动条,你可以试试
所以,不需要更多的技巧,因为谷歌提供了一个解决方案…我强烈推荐双同步ListView库。它比使用一个更有效GridView@bZea我已经提到了这个解决方案(列表中有5个)。它有很多问题。它不能对所有项目使用单个适配器。它不是流动的(一个接一个地滚动列表视图),也不是可定制的(无法设置列数)。有更多可能的方法来放置单元格,设备上的单元格数量可能会发生变化,因为有小型设备和大型设备(例如平板电脑),当设备位于横向而不是纵向时,您可能希望进行更改。虽然这是一个很好的解决方案,但我已经尝试了这两种方法,并且从默认配置判断,我认为它更好。在我的例子中,etsy可以很容易地与chris banes pull整合发布。他们说etsy缺少一些基本的东西:“StaggeredGridView不支持以下内容:项目选择器drawables、项目长按事件、滚动条、行分隔符、边缘效果、淡入边缘、Overscroll”怎么样:我仍然找不到任何好的小部件,例如,我试图实现交错的TridLayoutManager,但无法实现,看看我面临的问题。如果您找到了它的实现,您可以添加引用。谢谢