Как удалить Edittext из макета в Android?

#android #android-layout #android-edittext

#Android #android-layout #android-edittext

Вопрос:

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

Я могу удалить edittext из arraylist, но я также хочу, чтобы он исчез с моего макета / экрана.

как мне это сделать? Возможно ли это? любая помощь будет оценена. Заранее благодарю вас.

Ссылка на код:

Сначала добавляем Edittext в arraylist:

 ArrayList<EditText> list = new ArrayList<>();
ArrayList<Button> listbtn = new ArrayList<>();
  

Шаг 2:

 spinnerAdd_Field.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(MaterialSpinner view, int position, long id, final Object item)
            {
//                Snackbar.make(view, "Clicked "   item, Snackbar.LENGTH_LONG).show();
                {

                    editText = new EditText(Add_Account.this);
                    btnremove = new Button(Add_Account.this);

                    RelativeLayout.LayoutParams lpb = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 120);
                    lpb.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
                    lpb.setMargins(0, 0, 0, 32);
                    btnremove.setLayoutParams(lpb);
                    btnremove.setPadding(46, 0,0,0);
                    btnremove.setText( "Removen" item.toString());
                    btnremove.setId(count);
                    btnremove.setTextColor(Color.parseColor("#000000"));
                    btnremove.setBackgroundResource(R.drawable.backgroundrounded);
                    btnremove.setOnClickListener(btnclick);

                  
                    {
                        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 120);
                        lp.setMargins(0, 0, 0, 32);
                        editText.setLayoutParams(lp);
                        editText.setPadding(46, 0,0,0);
                        editText.setHintTextColor(Color.parseColor("#A17A7979"));
                        editText.setBackgroundResource(R.drawable.rounded_edittex);
                        editText.setTextColor(Color.parseColor("#7A7979"));
                        editText.setHint(item.toString());
                    }


                    if(btnremove.getParent() != null) {
                        ((ViewGroup)btnremove.getParent()).removeView(btnremove); // <- fix
                    }

                    myLayout.addView(editText);
                    myLayoutbtn.addView(btnremove);

                    // for each EditText add it to the ArrayList
                    for(int i=0; i < count; i  )
                    {
                        list.add(editText);
                    }

                    // for each Button also add it to the ArrayList
                    for(int i=0; i < count; i  )
                    {
                        listbtn.add(btnremove);
                    }
                    
                }
            }
        });
  

Проверьте это изображение для справки:

Проверьте это:

Комментарии:

1. Вы можете установить видимость на НЕВИДИМУЮ.

Ответ №1:

Если вы хотите удалить View из макета, вам следует использовать метод removeView(). В вашем случае:

 mLayout.removeView(editText);
  

Комментарии:

1. Большое спасибо, застрял на нем на несколько часов. Черт возьми, это было так просто!