我有一个我在代码中创建的按钮,它有一个Click事件的监听器。每次单击该按钮时,它应生成另一个按钮并将其添加到原始按钮下方。但是,无论我点击第一个按钮多少次,它只会添加一次动态按钮,而不再添加。
这是我的编码:
public class DynaminControlActivity extends Activity {
private RelativeLayout container;
private int mainIdCnt = 0;
private int mainId = 100;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
createMainButton();
}
public void createMainButton() {
container = (RelativeLayout) findViewById(R.id.workLayout);
Button b = new Button(this);
b.setId(mainIdCnt + mainId);
CharSequence text = "Main +";
b.setText(text);
container.addView(b);
if (mainId > 0) {
mainId++;
}
b.setOnClickListener((new View.OnClickListener() {
public void onClick(View v) {
createDynamicButton();
}
}));
}
public void createDynamicButton() {
container = (RelativeLayout) findViewById(R.id.workLayout);
Button b = new Button(this);
CharSequence text = "Main +";
b.setText(text);
RelativeLayout.LayoutParams relLayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relLayout.addRule(RelativeLayout.BELOW, mainIdCnt + mainId);
container.addView(b, relLayout);
if (mainId > 0) {
mainId++;
}
}
答案 0 :(得分:0)
一些事情......
如果您的主要布局是LinearLayout,则您不需要添加规则来指示按钮应显示在现有按钮下方 - 它将自动添加到最底部(垂直对齐)或非常右(水平对齐)布局。
所有按钮都有相同的文字。你确定每次都点击第一个按钮吗?我注意到只有你的第一个按钮上有一个监听器,所以如果你不小心点击其中一个按钮,那么什么都不会发生。
如果您打算添加多个按钮,它会快速扩展到大于屏幕尺寸,因此您应确保主要布局位于ScrollView中,以便您可以看到所有按钮添加
对setId()的调用可能会充斥着Android的内部工作原理。您应该让Android自动生成ID,而不是设置ID,如果您需要引用它,只需检索该值。