Представления, добавленные в TableLayout программно, не отображаются
Я пытаюсь добавить представления в TableLayout, но они просто не отображаются (я тестирую на эмуляторе). На самом деле я написал больше кода, чем это, то есть добавил textview к tablerows, но я сократил его до этого, и даже это не сработает. Есть идеи почему?
Вот код test.xml
:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST" >
</TextView>
</TableRow>
</TableLayout>
И код Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
/* Find Tablelayout defined in test.xml */
TableLayout tl = (TableLayout) findViewById(R.id.tableLayout);
/* Create a new row to be added. */
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.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));
}
Когда я тестирую на эмуляторе, я вижу только текстовое представление с жестко закодированной строкой "TEST" (определено в файле XML).
1 ответ
Решение
Попробуйте не устанавливать buttonLayout и не добавлять TableLayout.LayoutParams
при добавлении строки в таблицу.
//b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tr.addView(b);
//tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
t1.addView(tr)
я думаю TableLayout.LayoutParams
вызывает некоторые проблемы.