【发布时间】:2014-01-08 19:17:30
【问题描述】:
所以我在 XML 中声明了一个 TableLayout,第一行有 2 列,第二行有 4 列。
--------- ---------
| | |
| A | B |
| | |
--------- ---------
| | | | |
| | | | |
--------- ---------
现在我想动态更改第一行中第二列 (col. B) 的 colspan 以跨越整个 4 列而不是两列,并且第一列 (col A) 消失了,并且能够切换回两列状态。因此,表格布局的第二个状态是这样的:
-------------------
| |
| B |
| |
--------- ---------
| | | | |
| | | | |
--------- ---------
最初,A 和 B 都是用 XML 创建的,加载后调整大小并添加边距:
TableRow.LayoutParams bLp = new TableRow.LayoutParams(size, size);
bLp.setMargins(margin, 0, 0, margin);
bLp.span = 2;
b.setLayoutParams(bLp);
但是如果我尝试改变第二列的跨度并隐藏第一列,唯一改变的是第二列向左滑动
a.setVisibility(View.GONE);
TableRow.LayoutParams bLp = (TableRow.LayoutParams) b.getLayoutParams();
bLp.span = 4;
b.setLayoutParams(bLp);
将第二列的宽度更改为 MATCH_PARENT 也无济于事,但正如 TableRow.LayoutParams 的 Android 文档所说,根本没有考虑宽度:
这组布局参数强制每个子元素的宽度为 MATCH_PARENT,每个子元素的高度为 WRAP_CONTENT,但前提是未指定高度。
有没有办法实现我想要用 TableLayouts 做的事情?
谢谢
【问题讨论】:
标签: java android android-layout android-tablelayout