XML表格布局? 两个等宽的行填充了等宽的button?

以下是我的XML格式的一部分:

<TableLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:stretchColumns="*"> <TableRow> <Button android:id="@+id/countbutton" android:text="@string/plus1"/> <Button android:id="@+id/resetbutton" android:text="@string/reset" /> </TableRow> </TableLayout> 

现在我没有得到 – 一行的宽度和button的宽度取决于button内的文本。 如果这两个文本是equaly长让我们说:TEXT它确定 – 表半在屏幕中间。 但是,如果他们有不同的大小 – 让说“A”和“这是一个长button”中心的桌子不在屏幕中间,所以button不等宽…

要在button尺寸相同的行中有button,您需要执行此操作。

  <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="0dip"/> <Button android:layout_weight="1" android:layout_height="wrap_content" android:layout_width="0dip"/> </LinearLayout> 

并为您的button填写其他xml属性。

神奇的是在layout_weight和width属性。 你不需要表格布局。 这些属性告诉布局,你的视图应该在父布局中占用相等的空间。

很好的例子(最初来自http://androidadvice.blogspot.com/2010/10/tablelayout-columns-equal-width.html

testing和工作:

 <TableRow> <!-- Column 1 --> <TextView android:id="@+id/tbl_txt1" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 1" /> <!-- Column 2 --> <TextView android:id="@+id/tbl_txt2" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 2" /> <!-- Column 3 --> <TextView android:id="@+id/tbl_txt3" android:layout_width="0dip" android:layout_height="wrap_content" android:background="@color/red" android:textColor="@color/white" android:padding="10dip" android:layout_margin="4dip" android:layout_weight="1" android:text="Column 3" /> </TableRow> 

除了接受的答案:

我有一个类似的问题,我需要在列宽相等的网格中的几个图像,所以我用了一个表格布局。 它工作,但作为asynchronous加载的图像,相应的列将占用整个宽度,直到所有的列中至less有一个图像。

我使用Robby Pond的解决scheme解决了这个问题,但是对于最后一行来说,这并不奏效,这个行并不一定像其他行一样多,当我希望它们适合与上面相同的列。 为了解决这个问题,我用普通的View对象填充了那行的剩余空列,

使用与所有其他图像相同的布局参数:

width = 0, weight = 1.这就解决了!

布局片段

 <TableLayout android:id="@+id/tablelayout" android:layout_width="match_parent" android:layout_height="match_parent" /> 

以编程方式设置表格中button布局属性的代码:

 public void addButtons(View view) { TableLayout tableLayout = (TableLayout) findViewById(R.id.tablelayout); Context context = getApplicationContext(); tableLayout.removeAllViews(); for (int rowIndex = 0; rowIndex < ROWS; rowIndex++) { TableRow row = new TableRow(context); for (int columnIndex = 0; columnIndex < COLUMNS; columnIndex++) { Button btn = new Button(context); LayoutParams buttonParams = new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f); btn.setLayoutParams(buttonParams); row.addView(btn); } tableLayout.addView(row); } }