2010-11-25 136 views
0

我想动态添加表行...... 以下是我的Java代码:动态行添加到TableLayout

TableLayout tl = (TableLayout) findViewById(R.id.tablerow); 
     /* Create a new row to be added. */ 
     TableRow tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Create a Button to be the row-content. */ 
     Button b = new Button(this); 
     b.setText("Dynamic Button"); 
     b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Add Button to row. */ 
     tr.addView(b); 
     /* Add row to TableLayout. */ 
     tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

我的XML代码是

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tablerow" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableRow> 
     <TextView 
      android:id="@+id/content" 
      android:singleLine="false" /> 
    </TableRow> 

</TableLayout> 

但我在这条线上得到错误:

final TableLayout tl = (TableLayout)findViewById(R.id.tablerow); 

我得到的错误是无法从视图中投射到TableLayout

任何帮助将不胜感激

+0

为什么使用动态充气? setContentView()应该已经做了所有必要的充气。 – 2010-11-25 11:05:57

回答

1

你需要在你的<TableRow><TextView>领域android:layout_heightandroid:layout_width

这两个属性是必需的。

0

,同时为TableLayout实例检查其应android.widget控制..

0

你怎么能投tablerow的问题

TableLayout(android.widget)不是我们的包到tableLayout在这里(TableLayout)findViewById(R.id.tablerow)? 这不是错的吗?

0

有两种不同类型的LayoutParams,TableRow.LayoutParams和TableLayout.LayoutParams。

如果您在错误的地方使用了错误的Eclipse IDE,Eclipse IDE将不会抛出错误,但会导致UI无法正常工作。当您为TableRow和TableRow中的视图设置LayoutParams时,请确保通过使用限定名称将它们显式设置为正确的。

一个例子:

TableLayout tblServices = (TableLayout) findViewById(R.id.tblServices); 
TableRow row = new TableRow(this); 
row.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
TextView tvName = new TextView(this); 
tvName.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tblServices.addView(row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

而且,你不需要设置的LayoutParams一个按钮,以便消除该行应帮助。

0

答案太晚,但如果有人在寻找这个。 我遇到了同样的问题,并在尝试查找视图之前通过调用setContent()来修复它。