居中两行编辑文本

时间:2016-11-22 19:20:39

标签: java android android-layout

我有一个由两列组成的表。我想以编程方式为每个列添加两个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部分之下(理想情况下每个框的大小相同!)。

enter image description here

1 个答案:

答案 0 :(得分:0)

EditText的每个声明后立即尝试使用LayoutParams

LayoutParams params = new LayoutParams(0,LayoutParams.WRAP_CONTENT, 1.0f);
cell1.setLayoutParams(lparams);

LayoutParams的参数依次为:

  1. layout_width - 在这种情况下0以获得更好的效果,因为权重足以正确设置EditText宽度
  2. layout_height - 如果您愿意,可以在dp设置一个特定的数字
  3. layout_weight - 请注意,它必须是float