Android:动态或以编程方式在一行中添加两个EditText并使它们相关

时间:2017-01-26 03:20:39

标签: android android-edittext

我有一个显示“添加联系人”的按钮,当按下该按钮时,会在按钮下方添加一个EditText(名称)。再次按下该按钮时,它会在其下方再添加一个EditText,依此类推。

如何以编程方式在一个水平线中添加两个EditText?目前我有一个大小为5的EditText数组,因此不能添加超过5个EditText。我需要在他们每个旁边再添加一个EditText,在其中输入另一个值:电话号码。

我希望它看起来像 [ Name ] [Phone number]
[ Name ] [Phone number]

我可以让它们像打印一样打印出来 [ Name ] [Phone number]
[ Name ] [Phone number]

但我希望他们在一行。

还可以关联两个EditText吗?因此,例如,姓名和电话号码需要匹配,以便在搜索姓名时,将显示相应的电话号码。

private EditText et[] = new EditText[5];
private int index = 0;
protected void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);

  //apply layout dynamically
  final LinearLayout layout = new LinearLayout(this);
  /* layout style: omit */
  layout.addView( /*omit*/);

  //apply button dynamically
  Button button = new Button(this);
  button.setText("Add Contact");
  /* more button styles: Omit */
  layout.addView(button);

  button.setOnClickListener(new View.onClickListener(){
    @Override
    public void onClick(View v){
      if(index < 5){
        et[index] = new EditText(getApplicationContext());
        et[index].setHint(" NAME ");
        /* more et style: omit*/
        layout.addView(et[index]);
        index++;
      }
    }
  }
}

我的当前代码适用于每次添加一个EditText。但我不确定如何每次在一行中一次添加两个EditText。

1 个答案:

答案 0 :(得分:6)

使用水平线性布局并在里面添加两个编辑文本 试试这个:

LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,       ViewGroup.LayoutParams.WRAP_CONTENT));
linearLayout.setOrientation(LinearLayout.HORIZONTAL);  

对两个编辑文本使用布局权重为1(1.0f是权重)。您可以调整编辑文本的宽度和高度。

EditText et1 = new EditText(this);
et1.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));  

EditText et2 = new EditText(this);
et2.setLayoutParams(new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));  

现在将编辑文本添加到水平linearLayout,然后将其添加到布局中。

linearLayout.addView(et1);
linearLayout.addView(et2);
layout.addView(linearLayout);