【问题标题】:How to set the GridView or GridLayout to fill the height of the screen and force all the rows to be of equal height如何设置 GridView 或 GridLayout 以填充屏幕的高度并强制所有行的高度相同
【发布时间】:2013-01-22 06:21:09
【问题描述】:

我有一些视图必须放在 4 x 6 的网格中。每个视图应具有相同的宽度 w 和相同的高度 h 并填满屏幕。我想要的是使用 GridLayout 或 GridView 来绘制这些。

我知道我可以在 GridView 中使用stretchMode = "columnWidth" 来为其每个子级设置相等的宽度。我还希望它设置相等的高度并垂直填充屏幕。

我可以通过使用任何 GridView 或如果不可能,然后使用 GridLayout 来实现这一点吗?在切换到 LinearLayouts 并使用权重之前,我正在寻找 GridView,因为我有自定义视图作为网格项,我喜欢使用适配器而不是为每个元素编码。

【问题讨论】:

  • 你能发布你的代码吗,因为我认为让所有的孩子直到根到网格元素 fill_parent/parent 应该适合你....
  • 我不明白您所说的“将所有子根设置为网格元素 fill_parent/parent”是什么意思

标签: android android-layout android-gridview


【解决方案1】:

您仍然可以将AdaptersLinearLayoutsTableLayout 一起使用,您只需以编程方式添加视图并自己调用getView() 方法。 GridView 更适用于动态数量的项目并处理自己的滚动。

这可以在你的 onCreateView() 中使用类似的东西来完成:

mAdapter = new FooAdapter();
mList = (LinearLayout) v.findViewById(R.id.list);
for(int i = 0; i< mAdapter.getCount(); i++){
    View child = mAdapter.getView(i, null, mList);
    mList.addView(child);
}

如果您可能只是更改数据,则将旧视图作为 convertViews 传递可能会加快速度。

【讨论】:

  • 您能否解释或展示一些关于如何将适配器与 LinearLayouts/TableLayout 一起使用的参考资料?
  • 我知道如何在 LinearLayout 中使用网格视图和列表视图。我特别要求我需要一个解决方案来在网格中拥有固定数量的行,并使每行以相同的高度填充屏幕并仍然使用适配器。我在您的解决方案中看不到任何这样做的东西。不过,感谢您提供帮助。
  • layout_weight 属性将为您执行此操作。此解决方案不涉及 GridView 或 ListView。
【解决方案2】:

我做了一个扩展线性布局的自定义布局。我发现对于我的情况,这是一种更好的方法,并且我可以更好地控制布局上的所有触摸事件以及孩子本身。

【讨论】:

  • 你能把你的自定义布局放在这里吗?我也有同样的问题。
猜你喜欢
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 2012-06-22
相关资源
最近更新 更多