每行可变列宽的表(类似于iOS的UICollectionView)

时间:2013-01-28 09:41:38

标签: java android android-layout

Android SDK中的iOS UICollectionView是否相同?

我需要实现类似的“表格”布局,如​​下所示,但由于有许多单元格(用户将滚动屏幕以查看全部)出于性能原因,我需要重新使用单元格。

+-----------------+----------+--------+
| cell 1          | cell 2   | cell 3 |
+-----------------+--+-------+--+-----+
| cell 4  | cell 5   | cell 6   |
+---------+---+------+-----+----+---------+
| cell 7      | cell 8     | cell 9       |
+-------------+------------+--------------+

我正在考虑为每一行使用单独的GridView,但我需要立即滚动所有表格,我不确定单元格重用是否会以这种方式正常工作。

实施上表的最佳方式是什么?

3 个答案:

答案 0 :(得分:4)

如果您可以将单元格设置为预定义的宽度,则应该查看TwoWayGridView

否则,您正在寻找的是AOSP的实验分支,它被称为StaggeredGridView。 他们已经开始实施,但它还很年轻且毫无准备,但它可能会给你一个关于从哪里开始的提示。

通常,有不同的方法,根据我的经验,您可能最终必须编写一个良好的强大视图回收器并自己重新用户,以便能够依赖现有的API和小部件,您只能在必须计算滚动的宽度,并在滚动事件时分离或需要将视图附加到容器时放置视图。

答案 1 :(得分:1)

我不确定,但您可以找到针对您的问题的解决方案here.

我认为Bucket List Adapter是您问题的解决方案。 请尝试实施它并告诉我。

随意发表评论。享受编码。 :)

<强>已更新

你也可以像你说的那样做。当用户从下到上滚动时,只需创建Dynamic TableLayout。因此它不会占用太多内存,也会根据您的自定义视图显示数据。通过这种方式,您将拥有Scroll所有单元格,并且还解决了内存问题。

答案 2 :(得分:1)

我认为StaggeredGridViewQuiltView图书馆可以帮助您解决问题。使用这些库,我们可以根据宽度和高度排列图像

如果您正在使用被子视图,则可以通过更改ScaleType等来以不同的方式对其进行规避。

我没有尝试过TwoWayGridView,但值得一试。我希望这会有所帮助.. :)