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