2010-11-25 183 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()來修復它。