我有一个由两列组成的表。我想以编程方式为每个列添加两个EditText字段,因此它们将在列中居中。
在阅读了很多关于此的问题之后 - 我无法将它们集中在他们的专栏中。有人能告诉我我做错了什么吗?
private void AddNewRow()
{
TableLayout tl = (TableLayout) findViewById(R.id.score_grid);
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL));
EditText cell1 = CreateNewScoreBox(player1Rows);
EditText cell2 = CreateNewScoreBox(player2Rows);
tr.addView(cell1);
tr.addView(cell2);
tl.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
}
private EditText CreateNewScoreBox(List<EditText> rows)
{
EditText b = new EditText(this);
b.setText("");
b.setInputType(InputType.TYPE_CLASS_NUMBER);
b.addTextChangedListener(textWatcher);
b.setOnFocusChangeListener(focusLostListener);
b.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.MATCH_PARENT));
b.setGravity(Gravity.CENTER);
rows.add(b);
return b;
}
简而言之,我希望左侧的两个编辑文本位于Player 1和Player 2部分之下(理想情况下每个框的大小相同!)。
答案 0 :(得分:0)
在EditText
的每个声明后立即尝试使用LayoutParams:
LayoutParams params = new LayoutParams(0,LayoutParams.WRAP_CONTENT, 1.0f);
cell1.setLayoutParams(lparams);
LayoutParams
的参数依次为:
layout_width
- 在这种情况下0
以获得更好的效果,因为权重足以正确设置EditText宽度layout_height
- 如果您愿意,可以在dp
设置一个特定的数字layout_weight
- 请注意,它必须是float