如何以编程方式让两个不同的表格'单元格'在Android中具有相同的宽度?

时间:2011-08-17 21:21:43

标签: android layout

我有两个TableLayout小部件,在我的Activity的onCreate()方法中以编程方式创建。

Table1:
SomeTextCell1  SomeReallyReallyLongTextCell2  SomeTextCell3

Table2:
SomeOtherTextCell1  ShortTextCell2  SomeOtherTextCell3

表1直接显示在表2上方。

我正在寻找一种以编程方式分配Table1和Table2的单元格(它们是添加到TableRow的TextView小部件)的宽度与该列中最宽的相同的方法(因为每个单元格中的文本可以是不同值的数量)。这可能吗?像这样:

Table1:
SomeTextCell1       SomeReallyReallyLongTextCell2  SomeTextCell3

Table2:
SomeOtherTextCell1  ShortTextCell2                 SomeOtherTextCell3

获取这些TextView小部件的onCreate()方法的宽度只返回0,这有点意义,因为UI尚未布局任何内容。布局完成后我是否可以使用活动挂钩,myTextViewWidget.getWidth()将返回非零值?

1 个答案:

答案 0 :(得分:0)

好的,所以终于解决了这个问题。 This answer是关键。实际上,您将全局布局侦听器附加到您感兴趣的视图(在我的示例中为Table1和Table2的父级)并实现侦听器onGlobalLayout()方法。布局完成后,这将调用一次,允许getWidth()和getHeight()工作。解决方案的其余部分很简单(如果有点难看),它涉及确定跨表的列的最大宽度,然后循环表行并将列宽设置为最大列宽。工作了一个魅力!

特别感谢kcoppock的出色解决方案。