【问题标题】:How to remove View in Android?如何在 Android 中删除视图?
【发布时间】:2013-04-09 12:43:50
【问题描述】:

我有两个Buttons,它们在主布局中。如果单击添加Button,则必须动态添加EditText(使用充气机)。这部分正在工作。如果单击删除Button,则必须以后进先出的方式删除那些EditText。但我不知道如何删除视图。

add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.add_edit, null);
            ll.addView(view);
        }
    });
    remove.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            ll.removeViewAt(0);
        }
    });

【问题讨论】:

  • 你能检查一下你的布局吗?它可能还有其他元素。
  • 在主布局中,我只有两个带有线性布局的按钮。在“add_edit.xml”中只有 EditText 没有布局。
  • 你能保留新膨胀视图的全局副本吗?然后使用 ll.removeView(view)。而不是按索引。
  • 试过.. 它只删除最后一个视图

标签: android android-view layout-inflater viewgroup android-inflate


【解决方案1】:

用它来删除最后一个:

ll.removeViewAt(ll.getChildCount() - 1 );

或者,您可以在通货膨胀期间“记住”要删除的视图

ArrayList<View> viewList = new ArrayList<View>();

// during inflation
view = layoutInflater.inflate(R.layout.add_edit, null);
viewList.add(view);
ll.addView(view);

// then to remove the last
view  = list.get(list.size() - 1);
ll.removeView(view);

【讨论】:

  • ll.removeViewAt(ll.getChildCount() - 1 ); 这行得通,但它也删除了那个按钮..我不想删除按钮
  • 所以使用我给你的第二个选项。第二个选项更可靠,因为即使布局中有其他内容,它也只会删除使用按钮添加的内容。记得检查 ArrayList 的边界
  • 谢谢.. view = viewList.get(viewList.size() - 1); 这只会删除最后一个视图。
  • 但正如我所说,不要忘记检查边界。例如,当 size=0 时,您可能会遇到问题。
  • if (viewList.size() &gt; 0) { view = viewList.get(viewList.size() - 1); ll.removeView(view); } 我已经尝试过了.. 它只删除最后一个视图..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 2011-05-02
相关资源
最近更新 更多