Программное добавление TableRow в TableLayout не работает

Я пытаюсь добавить строки таблицы программным образом после кода здесь

/* Find Tablelayout defined in main.xml */ TableLayout tl = (TableLayout) findViewById(R.id.SaleOrderLines); /* 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. */ //tr.setBackgroundResource(R.drawable.sf_gradient_03); tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

Но на экране ничего не рисуется. (Так же, как упоминалось здесь )

Когда я добавил tr.setBackgroundResource(R.drawable.sf_gradient_03); , Строка с фоновым изображением рисуется, но не кнопка

Вот мой макет

 <!-- Sale Order Lines START --> <LinearLayout android:id="@+id/SaleOrderLinesArea" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dip" android:background="@drawable/sf_gradient_11" > <LinearLayout android:id="@+id/subHeaderArea" android:padding="10dip" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/screenTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/title_sub" android:textStyle="bold" android:text="Order Lines" /> </LinearLayout> <TableLayout android:id="@+id/SaleOrderLines" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dip" android:stretchColumns="*"> <TableRow android:background="@drawable/sf_gradient_13" android:padding="10dip" > <TextView android:id="@+id/order_ref_label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/fg_prime" android:text="bLA bLA" /> <TextView android:id="@+id/product_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textColor="@color/fg_title" android:text="@string/product" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:textColor="@color/fg_title" android:text="@string/product_quantity" /> </TableRow> <TableRow android:background="@drawable/sf_gradient_03" android:paddingLeft="10dip" android:paddingRight="10dip" > <TextView android:id="@+id/order_ref_label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/fg_prime" android:text="Fooo" /> <Spinner android:id="@+id/product_spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:prompt="@string/customer_prompt"> </Spinner> <EditText android:id="@+id/product_uom_qty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:fadingEdge="horizontal" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="5dip" android:paddingBottom="5dip"> <Button android:id="@+id/add_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Lines" /> </LinearLayout> </LinearLayout> <!-- Sale Order Lines END --> 

Solutions Collecting From Web of "Программное добавление TableRow в TableLayout не работает"

Получил это, каждый LayoutParams должен быть из android.widget.TableRow.LayoutParams кроме одного, который был tl.addView(...) в tl.addView(...)

 /* Find Tablelayout defined in main.xml */ TableLayout tl = (TableLayout) findViewById(R.id.SaleOrderLines); /* Create a new row to be added. */ TableRow tr = new TableRow(this); tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); /* Create a Button to be the row-content. */ Button b = new Button(this); b.setText("Dynamic Button"); b.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); /* Add Button to row. */ tr.addView(b); /* Add row to TableLayout. */ //tr.setBackgroundResource(R.drawable.sf_gradient_03); tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); 

Пожалуйста, обратите внимание, что ваш код может быть идеальным, но классы, которые вы используете, не являются правильными. Возможно, вы использовали import android.view.ViewGroup.LayoutParams , где, поскольку правильный класс доступен из следующего оператора импорта:

Import android.widget.TableRow.LayoutParams