我动态创建按钮并将它们随机放置在屏幕上。我想在点击按钮时删除一个按钮并创建另一个按钮,但是当我这样做时,所有其他按钮(下面的那些按钮都是percise)也会改变它们的位置(向上移动1行)。如何修改我的代码,以便在单击按钮时其他按钮不会改变其位置?我想在删除的那一行的同一行中添加新按钮。 我使用的是线性布局,所以当我添加一个按钮时,它会将它添加到底部并通过向上推所有行来填充空白行。
在下面的代码中,我只需几秒钟后删除按钮:
private void createGreenButton() {
Random r = new Random();
int hideDelay = r.nextInt(1000) + 1000;
final Button greenButton = new Button(this);
greenButton.setText("button");
greenButton.setOnClickListener(greenButtonClick(greenButton));
layout.addView(greenButton, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
// Place the buttons randomly on the screen
layout.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@SuppressLint("NewApi")
@Override
public void onGlobalLayout() {
Random r = new Random();
layout.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
LinearLayout.LayoutParams layoutParams = (LayoutParams) greenButton
.getLayoutParams();
int horizontalMargin = r.nextInt(SCREEN_WIDTH
- greenButton.getWidth());
layoutParams.setMargins(horizontalMargin, 50, 0, 0);
greenButton.setBackgroundColor(Color.GREEN);
greenButton.setLayoutParams(layoutParams);
}
});
layout.requestLayout();
mHandler.postDelayed(new Runnable() {
public void run() {
((ViewManager) greenButton.getParent()).removeView(greenButton);
createGreenButton();
}
}, hideDelay);
}