Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to dynamically set layout parameters in Android?

I have these text fields which I generated dynamically. But I can't seem to set layout parameters for them. Please tell me what I'm doing wrong.

I'm able to generate the fields without layout parameters. However, If I use LayoutParams, it doesn't even get generated.

Code:

TableLayout table = (TableLayout) findViewById(R.id.TableLayout1);

TableRow tr = new TableRow(this);
LinearLayout.LayoutParams trparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
tr.setLayoutParams(trparams);

cg[i] = new EditText(this);
weight[i] = new EditText(this);
cg[i].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
weight[i].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

//Here's where it goes wrong. By adding fieldparams, the text field doesn't even get generated.
LinearLayout.LayoutParams fieldparams = new LinearLayout.LayoutParams(10, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
tr.addView(cg[i], fieldparams);
tr.addView(weight[i], fieldparams);

table.addView(tr);
like image 471
ask Avatar asked Jan 31 '12 12:01

ask


2 Answers

You are adding Table Row into table so use TableLayout.LayoutParams instead of LinearLayout.LayoutParams.As we use LayoutParam according to parent in which we are going to add

like image 162
Tofeeq Ahmad Avatar answered Nov 08 '22 17:11

Tofeeq Ahmad


You have to use TableRow.LayoutParams instead of LinearLayout.LayoutParams

Replace your code

LinearLayout.LayoutParams fieldparams = new LinearLayout.LayoutParams(10, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);

with the below code.

TableRow.LayoutParams fieldparams = new TableRow.LayoutParams(10, TableRow.LayoutParams.WRAP_CONTENT, 1.0f);

Its working fine. Let me know what happened. :-)

like image 28
Yugandhar Babu Avatar answered Nov 08 '22 17:11

Yugandhar Babu