我在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具有恒定的宽度以适应列。
答案 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>