Программно добавление 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 -->
2 ответов
понял, каждый LayoutParams
должно быть android.widget.TableRow.LayoutParams
кроме одного, который поставляется в 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
, где в качестве правильного класса доступен следующий оператор импорта :
импорт android.штучка.TableRow.LayoutParams