Android TableLayout中“colspan”的等价物是什么?

我在Android中使用TableLayout。 现在我有一个TableRow,其中有两个项目,在它下面有一个TableRow。 它呈现如下:

----------------------------- | Cell 1 | Cell 2 | ----------------------------- | Cell 3 | --------------- 

我想要做的是让Cell 3在两个上层单元之间伸展,所以它看起来像这样:

 ----------------------------- | Cell 1 | Cell 2 | ----------------------------- | Cell 3 | ----------------------------- 

在HTML中,我会使用COLSPAN ….我如何使这项工作在Android?

看起来有这样一个属性: layout_span

更新:此属性必须应用于TableRow的子项。 不是TableRow本身。

只是为了完成答案,layout_span属性必须添加到孩子,而不是TableRow。

这段代码显示了我的tableLayout的第三行,它跨越了2列。

 <TableLayout> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:text="@string/create" /> </TableRow> </TableLayout> 

这就是你如何编程

 //theChild in this case is the child of TableRow TableRow.LayoutParams params = (TableRow.LayoutParams) theChild.getLayoutParams(); params.span = 2; //amount of columns you will span theChild.setLayoutParams(params); 

您必须使用layout_weight来填充整个行,否则它仍会填充表格布局的左列或右列。

 <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_span="2" android:layout_weight="1" android:text="ClickMe" /> </TableRow> 

也许这会帮助别人。 我试过layout_span的解决scheme,但这不适合我。 所以我用这个技巧解决了这个问题。 只需使用LinearLayout来代替需要colspan的TableRow ,就是这样。

在TableRow元素的子元素中使用android:layout_span

我认为你需要围绕另一个布局。 有一个布局列表垂直,里面有另一个(或在这种情况下,两个)水平列表。

我仍然很难很好地将界面拆分为Android中的50-50部分。

我有一些rowspan的问题,例如用代码生成的TableRow,Textview等等。 即使Onimush的答案似乎是好的,它不适用于生成的用户界面。

这里是一段代码….不工作:

  TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade); 

代码似乎是确定的,但是,当你到达“the_params”的init时,它返回NULL。

另一方面,这个代码就像一个魅力:

  TableRow the_ligne_unidade = new TableRow(this); the_ligne_unidade.setBackgroundColor(the_grey); TextView my_unidade = new TextView(this); my_unidade.setText(tsap_unidade_nom); my_unidade.setTextSize(20); my_unidade.setTypeface(null, Typeface.BOLD); my_unidade.setVisibility(View.VISIBLE); // Put the TextView in the TableRow the_ligne_unidade.addView(my_unidade); // And now, we change the SPAN TableRow.LayoutParams the_param; the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams(); the_param.span = 3; my_unidade.setLayoutParams(the_param); 

唯一的区别是在设置span之前,我在TableRow里面推Textview。 在这种情况下,它的工作。 希望这会帮助别人!