如何删除以编程方式添加的Button

时间:2013-07-03 01:58:42

标签: android button dynamic android-linearlayout

我在运行时向线性布局添加按钮,并且需要添加在用户需要时删除它们的功能。目前我有一个按钮,打开一个弹出窗口,其中包含一个列表,其中包含添加的每个按钮的文本。如果可能的话,我可以让每个onItemClick删除相应的按钮吗?如果没有,删除特定按钮的最佳方法是什么?

以下是添加按钮的代码:

private void addButton(){
    LinearLayout lL = (LinearLayout) findViewById(R.id.requirement_linear);
    lL.setOrientation(LinearLayout.VERTICAL);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
    p.setMargins(0,2,0,0);
    Button b = new Button(this);
    b.setBackgroundResource(R.drawable.blue_button); 
    b.setOnClickListener(openRequirement);
    b.setTextColor(Color.parseColor("#FFFFFF"));
    String button_text = (index + 2) + ". " + requirement_list.get(index + 1).getName();
    b.setText(button_text);
    requirements_text.add(button_text);// requirements_text is an arraylist<string> which stores the text so I can display them in my popup to delete them.
    index ++;
    lL.addView(b,p);
}

2 个答案:

答案 0 :(得分:2)

您可以在LinearLayout上使用removeView()并传递按钮。您可以识别OnClick(视图)回调上的按钮,视图中有按钮。

根据要求,这是一个例子。

final LinearLayout lL = (LinearLayout) findViewById(R.id.requirement_linear);
Button b =  new Button(this);
b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View button) {
        lL.removeView(button);
    }
});
lL.addView(b);

或者,您可以使用removeViewAt()按索引删除子视图。您可以使用“按钮文本列表”的索引。假设它是列表视图,你可以试试这个。

lview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
            lL.removeViewAt(position);
        }
    });

答案 1 :(得分:0)

这是我隐藏和显示按钮的方式

    Button b = new Button(this);
    b.setVisibility(View.GONE); // this will hide the button and it will now show
    b.setVisibility(View.VISIBLE); // this will show the button if it was hidden before

享受!