以编程方式添加的EditText没有设置match_parent width属性

时间:2015-01-20 04:04:05

标签: android android-layout android-edittext

我在for循环中运行以下代码。

TableRow r1 = new TableRow(this);
r1 .setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

TextView editLabel = new TextView(this);
editLabel.setText("Label");
EditText editText = new EditText(this);
editText.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
editText.setMaxLines(1);

r1.addView(editLabel);
r1.addView(editText);
tableLayout1.addView(r1);

这些行被添加到TableLayout中,但EditText似乎没有对layout_width有效的match_parent属性。我使用的表格布局是

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0"
android:shrinkColumns="1"
android:id="@+id/attibutesLayout">
</TableLayout>

edittext似乎没有宽度,并且在输入数据时不断增加。我希望edittext具有恒定的宽度以适应列。

2 个答案:

答案 0 :(得分:1)

使用以下代码

 TableRow r1 = new TableRow(this);
    r1 .setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
    final float scale = this.getResources().getDisplayMetrics().density;
    TextView editLabel = new TextView(this);
    editLabel.setLayoutParams(new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT,(int) (1 * scale + 0.5f)));
    editLabel.setText("Label");
    EditText editText = new EditText(this);
    editText.setLayoutParams(new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT,(int) (1 * scale + 0.5f)));
    editText.setMaxLines(1);
    r1.addView(editLabel);
    r1.addView(editText);
    tableLayout1.addView(r1);

和您的xml相同

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0"
android:shrinkColumns="1"
android:id="@+id/attibutesLayout">
</TableLayout>

答案 1 :(得分:0)

您为TableLayout stretchColumns设置了错误的值,将其更改为1可以解决您的问题。使用以下布局并尝试:

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1"
android:shrinkColumns="1"
android:id="@+id/attibutesLayout">
</TableLayout>