J'essaie d'ajouter des lignes de table par programme en suivant le code ici
/* 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));
Mais rien n'est dessiné à l'écran. (identique à celui mentionné ici )
Quand j'ai ajouté tr.setBackgroundResource(R.drawable.sf_gradient_03);
, la ligne avec l'image d'arrière-plan est dessinée mais pas le bouton.
Voici ma mise en page
<!-- 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 -->
Compris, chaque LayoutParams
devrait être de Android.widget.TableRow.LayoutParams
sauf celui fourni à 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));
Veuillez noter que votre code est peut-être parfait, mais que les classes que vous utilisez ne sont pas appropriées. Vous avez peut-être utilisé import Android.view.ViewGroup.LayoutParams
, où la classe correcte est disponible à partir de l'instruction d'importation suivante:
importer Android.widget.TableRow.LayoutParams
Dans mon cas, j'ai changé la largeur de TableRow.LayoutParams.WRAP_CONTENT
à TableRow.LayoutParams.MATCH_PARENT
, puis cela fonctionne.
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));