我正在开发一个SMS应用程序。我有一个“+”按钮,这样当用户点击该按钮时,新的ExitText将出现在现有的按钮下,供用户输入多个电话号码来发送文本。任何人都可以帮忙在按下按钮时创建一个新的EditText吗?
谢谢,
答案 0 :(得分:5)
我会保留List
个EditText
个对象并添加一个新对象
EditText toAdd = new EditText(this);
list.add(toAdd);
按下按钮上的列表。另外,请阅读此链接,了解如何将新EditText
添加到当前布局。 How to lay out Views in RelativeLayout programmatically?
当您知道用户已完成并想要保存数字时,请遍历List
EditText
个{{1}}个对象。
答案 1 :(得分:2)
我构建了一个应用程序,根据数据库中的行数动态添加按钮。
基本上我发现创建一个长度等于我需要的按钮数量的按钮数组更容易: 在你的情况下......
final int PHONE_NUMBERS = 0;
final int OTHER_STUFF = 1;
final int MORE_STUFF = 2;
LinearLayout MyEditTextLayout;
EditText []DynamicFields = new EditText[3];
*note these should be declared outside of onCreate*
then within onCreate {
MyEditTextLayout = (LinearLayout) findViewById (R.id.Whatever_you_named_your_layout_in_xml);
}
then in your onClickListener dialog:
final EditText editText = new EditText();
if(button = myPhoneNumberButton)
{
editText.layout_width = "fill_parent";
editText.hint = "Enter Phone Numbers Here";
DynamicFields[PHONE_NUMBERS] = editText; //that way you can refer to your editTexts later
MyEditTextLayout.addView(editText);
}
请注意我在工作中快速输入了这个代码,因此代码可能无法完全正常工作,但如果您有任何问题,这应该会给您一个良好的开端评论!
答案 2 :(得分:-1)
要在里面创建一个带有EditText的对话框,可以在按钮的OnClickListener中执行此操作:
final FrameLayout fl = new FrameLayout(ContactView.this);
final EditText txtSms = new EditText(ContactView.this);
txtSms.setRawInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
txtSms.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
txtSms.setHorizontallyScrolling(false);
txtSms.setVerticalScrollBarEnabled(true);
txtSms.setGravity(Gravity.CENTER);
fl.addView(txtSms, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
final AlertDialog.Builder builder = new AlertDialog.Builder(ContactView.this);
//building the custom AlertDialog
builder.setView(fl).setTitle("Enviar mensaje").setCancelable(false)
.setPositiveButton("Send", new DialogInterface.OnClickListener(){
//What happens when the positive button is pressed
public void onClick(DialogInterface d, int which){
if(txtSms.getText().toString().length() != 0){
enviarSms(txtSms.getText().toString());
d.dismiss();
}else{
Toast.makeText(((Dialog) d).getContext(), "Can't send an empty message", Toast.LENGTH_SHORT).show();
}
}
//What happens when the negative button is pressed
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface d, int which) {
d.dismiss();
}
}).create().show();