0

我在运行时将按钮添加到线性布局中,如果用户需要,我需要添加删除它们的功能。目前我有一个按钮,它打开一个弹出窗口,其中包含一个列表,其中包含添加的每个按钮的文本。如果可能的话,我可以让每个 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);
}
4

2 回答 2

2

您可以在 LinearLayout 上使用 removeView() 并传递您的按钮。您可以在 OnClick(View view) 回调上识别按钮,那里的视图就是按钮。

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

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);
        }
    });
于 2013-07-03T02:18:11.883 回答
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

享受!

于 2013-07-03T02:20:49.637 回答