【问题标题】:Possible to fill a 'grid-like' view by column rather than by row?可以按列而不是按行填充“类似网格”的视图吗?
【发布时间】:2011-03-18 15:34:49
【问题描述】:

我正在使用 GridView 显示电视频道列表,使用 SimpleCursorAdapter 从数据库中检索频道名称。默认行为是填充网格左 -> 右,上 -> 下,如...

1 2
3 4
5 6

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

我有一个用户希望在移动到下一个之前将每一列填充到顶部->底部,因此我正在查看具有固定数量的行和某种可水平滚动的“网格”,例如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 本身无法做到这一点,但是否存在这样的现有视图?如果不是,那么创建自定义视图的最佳方法是什么?

谢谢。

【问题讨论】:

  • GridView with horizontal scroll 的可能重复项
  • @Matthew:好吧,承认我的标题特别提到了 GridView,但我已经想通了,我无法旋转/定位 GridView 的布局。我的问题是是否有一种观点可以做到这一点或如何最好地处理这种情况。我将编辑我的标题,感谢您指出这一点。
  • @Squonk 这个伙伴运气好吗?我有类似的问题,请参阅stackoverflow.com/questions/11577153/…

标签: android gridview


【解决方案1】:

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

编辑 - 如果你知道你的网格项目有多大,你可以偷工减料。 GridView 很复杂,主要是因为它处理任何大小的项目并动态加载它们。对您来说更简单的方法可能是:

  1. 创建一个HorizontalScrollView,里面有一个水平的LinearLayout
  2. 确定您的项目可以在屏幕上显示多少行。打电话给rows
  3. while 你还有需要布局的项目:
    1. 创建一个垂直的LinearLayout,向其中添加rows 或更少的项目。
    2. 将新的垂直LinearLayout 添加到水平方向。

与“水平 GridView”相比,有一些缺点:

  • 所有视图都会立即加载,这对于庞大的项目列表是不利的。
  • 您需要知道您的物品有多大,并且它们的尺寸必须相同。

优点:

  • 很容易实现。

【讨论】:

  • 谢谢,自从发布我的问题以来,我一直在研究 Horizo​​ntalScrollView,但还没有决定下一步该去哪里。我的理想是让适配器视图 适配器关系为我处理所有事情,但我想我将不得不自己处理所有事情。不过,你已经给了我足够的开始 - 可能会很有趣!
  • 是的,您可以实现自己的 AdapterView,这可能是一种很好的可重用方式。查看 Android 源代码中的 GridView.java 让我觉得这可能比它的价值更麻烦。
  • 我已经在这方面取得了一些进展,虽然它不是一个高优先级,所以它现在处于次要地位。我想我可以根据你的建议让它发挥作用。谢谢。
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 2013-08-09
  • 2018-05-25
  • 2012-11-14
  • 1970-01-01
相关资源
最近更新 更多