2012-01-31 14 views
12

私は動的に生成したこれらのテキストフィールドを持っています。しかし、レイアウトパラメータを設定することはできません。私が間違っていることを教えてください。Androidでレイアウトパラメータを動的に設定する方法は?

私はレイアウトパラメータなしでフィールドを生成することができます。しかし、LayoutParamsを使用しても、生成されません。

コード:

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); 
+6

tablayowでlinearlayout.layoutparamsを使用していますか?それはshadがtablerow.layoutparamsである – Amit

+1

素敵なコメント... butlittle補正Amit.itはTableLayoutではないTableRow – Sameer

答えて

14

あなたがテーブルに表の行を追加しているので、我々は

6

を追加しようとしている親に応じてあなたがを使用する必要がLayoutParam代わりに私たちが使用LinearLayout.LayoutParamsの.asのTableLayout.LayoutParamsを使用します代わりLinearLayout.LayoutParams

のTableRow.LayoutParamsは、あなたのコードを置き換え

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

以下のコードを使用してください。

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

何が起こったのか教えてください。 :-)