如何从 Android 的布局中删除 Edittext?

Posted

技术标签:

【中文标题】如何从 Android 的布局中删除 Edittext?【英文标题】:How to remove Edittext from a layout in Android? 【发布时间】:2021-02-10 19:18:29 【问题描述】:

我能够在按钮单击时将edittext 动态添加到布局中。 现在我希望用户也能够删除相应的编辑文本。

我可以从 arraylist 中删除 edittext,但我也希望它从我的布局/屏幕中消失。

我该怎么做? 可能吗? 任何帮助,将不胜感激。 提前谢谢你。

代码参考:

首先将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( "Remove\n"+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);
                    
                    
                
            
        );

查看此图片以供参考:

【问题讨论】:

您可以将可见性设置为INVISIBLE。 【参考方案1】:

如果你想从布局中移除视图,你应该使用 removeView() 方法。在你的情况下:

mLayout.removeView(editText);

【讨论】:

非常感谢,卡了几个小时。天哪,原来这么简单!

以上是关于如何从 Android 的布局中删除 Edittext?的主要内容,如果未能解决你的问题,请参考以下文章

Android:从操作栏的自定义布局中删除左边距

如何从 Android 中的 RemoteViews 中删除小部件?

如何在 android 中实用地添加和删除布局?

如何删除 textEdit 和 TextEdit 布局中的左侧填充

如何在android的linearlayout中删除阴影?

在Android中销毁布局时覆盖的方法