如何从屏幕上删除和添加按钮而不影响其他按钮?

时间:2014-05-29 18:59:42

标签: android button

我动态创建按钮并将它们随机放置在屏幕上。我想在点击按钮时删除一个按钮并创建另一个按钮,但是当我这样做时,所有其他按钮(下面的那些按钮都是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);
}

0 个答案:

没有答案