Android:如何在TableLayout中均匀拉伸列?

75

我在安卓应用程序中展示了一张数据表格,想要让表格的每一列尺寸均匀分布,而不是根据内容大小调整尺寸。

我已经尝试过 stretchColumns 属性,但无法找到正确的组合方法。有什么建议吗?


stretchColumns出了什么问题?有一些列“溢出”了吗? - Jeremy Logan
我希望它们的大小都相同,但它们似乎在彼此之间获得了不同的大小。 - Drahcir
1
我知道... 我想要弄清楚的是,如果其中一个视图比你想要分配给它的列的区域更大。 - Jeremy Logan
我也是,我正在尝试强制限制每列的宽度,并将其设置为与其他列相等,并使每列的内容最大程度地延伸到其分配的宽度,但不要更宽。 - Artem Russakovskii
5个回答

168
我曾经遇到相同的问题-我总是只输入了一个数字在android:stretchColumns里面,但你需要输入所有需要被拉伸的列。所以如果你有三列,你需要写成这样:

我曾经遇到过同样的问题 - 我总是只在android:stretchColumns中输入一个数字,但实际上需要输入所有需要拉伸的列。因此,如果你有三列,你需要这样写:

android:stretchColumns="0,1,2"

或者写成:

android:stretchColumns="*"

那么所有列的大小都将相同。提醒一下,android:stretchColumnsTableLayout元素的一个属性。


我正在尝试在Android中从类动态地显示7列值。但是,当在圆形手机上安装并保持圆形时,它不能像XML静态那样拉伸列。 - Siten
1
在运行时我们该如何做到这一点? - Ewoks
3
更新:pTable.setColumnStretchable(1, true); pTable.setColumnShrinkable(0, true); 意思是让pTable的第二列可以自动拉伸,同时第一列可以自动收缩。 - Ewoks
这似乎是正确的,直到列经常改变其大小 - mr5

23
您需要为表格行中的每个视图设置android:layout_width="0dip"android:layout_weight="1"。我认为这是有效的,因为权重决定各自视图在行中使用的空白区域的比例,而由于所有视图的宽度都设置为0dip,整个行都是空白区域,因此在相同权重下,视图被分配了相同比例的整个宽度。

正是我想要的。这将使列的大小保持一致。 - Abdel Aleem

4
使用android:layout_weight来设置列的权重。

2

您可以通过单元格内容的大小来控制列的大小。如果您希望它们都具有相同的大小,请通过适当单元格中的 android:layout_width 进行设置。


3
如内容具有动态性且我不知道大小布局,宽度将无效。是否有其他方法? - AD14

-2

对于仍在寻找解决方案的人,我是这样做的: 将列设置为可收缩和可伸展即可解决问题。 我的问题与OP几乎相同。


对我来说,就是将你的答案和linitbuff的答案结合起来。 - tom_mai78101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接