【问题标题】:android GridLayout divider rowandroid GridLayout 分隔行
【发布时间】:2015-07-26 10:24:43
【问题描述】:

我正在尝试实现一个表格布局,该布局在其下方有一个标题和一堆行。我选择了 GridLayout (android.support.v7.widget.GridLayout),因为某些元素需要跨越多列(但这些与问题无关)。

我的每个标题单元格都包含一个带有一堆 TextView 的 LinearLayout,它们是动态填充代码的,为了举例,请看下图。 第二行应该包含一个简单视图的分隔符,它应该跨越我的标题列 (3)。

问题在于分隔线的宽度 - 如果我选择 MATCH_PARENT,它将推动 GridLayout 向右填充整个剩余空间。网格需要包裹内容并水平居中。在我看来,网格布局 (WRAP_CONTENT) 和分隔线布局 (MATCH_PARENT) 之间存在冲突。

如何在不硬编码的情况下固定分隔线的宽度?

http://i61.tinypic.com/2415eg5.png

红色是我的 LinearLayouts(标题),绿色是 GridLayout 本身,底部的蓝色细线是分隔线。

谢谢, 莫

解决方案(如下所示): 我必须将分隔线的列重设置为 1,而不指定宽度(实际上将其设置为零)。由于我需要在代码中处理所有这些问题,因此解决方案是手动实例化 GridLayout.LayoutParams 类并使用

ColumnSpec = GridLayout.InvokeSpec(row_index, num_spanned_cols, weight)

希望这对将来的其他人有所帮助。

【问题讨论】:

  • 不知何故我无法弄清楚你想要达到的目标。你能发布一张你所期待的“MS Paint made”图片吗?
  • 嗨,看看这里link。如果我删除分隔线,我会得到正确的布局。

标签: android android-layout android-gridlayout


【解决方案1】:

如果您将宽度设置为 0dp,则给它android:layout_weight="1" (你可以给它任何你想要的重量)它应该填满所有可用的空间,如果我理解你的要求正确的话,不要推动你的界限

【讨论】:

  • 检查并在 XML 中工作,但我找不到在代码中设置它的方法。有什么想法吗?
  • 如果您调用.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT,1),其中第三个参数 1 是权重
  • 我已经在设置 ​​.setLayoutParams(GridLayout.LayoutParams) 这是因为我需要指定列跨度。有没有办法通过这种类型也指定列权重?
  • 知道了,解决方案是 ColumnSpec = GridLayout.InvokeSpec(0, 3, 1),最后一个参数是权重。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2014-06-02
  • 2018-02-05
  • 2015-08-22
  • 1970-01-01
相关资源
最近更新 更多