我有一个显示“添加联系人”的按钮,当按下该按钮时,会在按钮下方添加一个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。
答案 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);