Android: добавление EditText программно при нажатии кнопки - PullRequest
3 голосов
/ 22 июля 2011

Я работаю над приложением SMS. У меня есть кнопка «+», так что, когда пользователь нажимает эту кнопку, под существующим появляется новый текст ExitText, чтобы пользователь мог ввести несколько телефонных номеров для отправки текста. Кто-нибудь может помочь с созданием нового EditText при нажатии кнопки?

Спасибо,

Ответы [ 3 ]

5 голосов
/ 22 июля 2011

Я бы оставил List из EditText объектов и добавил бы новый

EditText toAdd = new EditText(this);
list.add(toAdd);

в список при нажатии кнопки.Кроме того, прочитайте эту ссылку, чтобы узнать, как добавить этот новый EditText в текущий макет. Как программно разметить Views в RelativeLayout?

Когда вы знаете, что пользователь закончил и хочет сохранить числа, выполните итерацию ваших List из EditText объектов.

2 голосов
/ 22 июля 2011

Я создал приложение, которое динамически добавляет кнопки в зависимости от количества строк в моей базе данных.

В основном мне было проще создать массив кнопок с длиной, равной количеству нужных мне кнопок:В вашем случае ...

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);

}

обратите внимание, я быстро набрал это на работе, чтобы код мог работать не так, как есть, но это должно дать вам хорошее начало Комментарий, если выесть вопросы!

0 голосов
/ 09 августа 2012

Чтобы создать диалог с 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...