2016-11-22 44 views
0

我有一张由两列组成的表格。我想编程盟友添加两个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; 
} 

总之我要上左边的两个编辑文本是玩家1和玩家2段下(理想情况下每个框是相同的大小!)。

enter image description here

+0

是它的基本为你使用'java'代码,而不是' xml'文件?在我看来,在布局文件中做起来会容易得多。 – Robb1

回答

0

尝试使用LayoutParamsEditText每个声明之后:

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

LayoutParams参数依次为:

  1. layout_width - 在这种情况下0有更好的表现,因为重量足以正确设置EditText宽度
  2. layout_height - 在这里,你可以,如果你喜欢
  3. layout_weight设置特定数量dp - 请注意,它必须是一个float