可以按列而不是按行填充“网格状”视图?

时间:2011-03-18 15:34:49

标签: android gridview

我正在使用GridView显示电视频道列表,使用SimpleCursorAdapter从数据库中检索频道名称。默认行为是填充左边的网格 - >右,顶部 - >像...一样的底部。

1 2
3 4
5 6

GridView固定有2列,如果超过其父级的垂直边界,显然可以垂直滚动。

我有一个用户希望每个列都填充顶部>底部然后继续下一个,所以有效地我正在寻找一个固定数量的行,其中某个'grid'可以水平滚动,示例有9行(固定),没有垂直滚动,2列可见和水平滚动...

1 10 | 19
2 11 | 20
3 12 | 21
4 13 | 22
5 14 | 23  <-> 19-27 hidden, but columns scrollable horizontally
6 15 | 24
7 16 | 25
8 17 | 26
9 18 | 27

我理解GridView本身不能这样做,但是现有的视图是否会像这样?如果没有,创建自定义视图的最佳方法是什么?

感谢。

1 个答案:

答案 0 :(得分:3)

使用GridView无法做到这一点。您必须创建自定义视图才能执行此操作。

修改 - 如果您知道网格项目有多大,则可以剪切一些角落。 GridView很复杂,主要是因为它处理任何大小的项目并动态加载它们。对您来说更简单的方法可能是:

  1. 在里面创建一个水平HorizontalScrollView的{​​{1}}。
  2. 确定您的项目的行数适合屏幕。请拨打此LinearLayout
  3. rows您仍然需要布置项目:
    1. 创建一个垂直while,向其添加LinearLayout个或更少的项目。
    2. 将新的垂直rows添加到水平位置。
  4. “水平GridView”会给你带来一些缺点:

    • 所有视图都会立即加载,这对于大量项目都不利。
    • 你需要知道你的物品有多大,而且它们的大小必须相同。

    上升空间:

    • 这很容易实现。