#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. Большое спасибо, застрял на нем на несколько часов. Черт возьми, это было так просто!