如何在运行时向布局添加按钮

时间:2016-07-25 05:49:27

标签: android android-layout

我希望在创建网格布局时逐个动态地添加按钮,但在我的情况下,按钮是在每次迭代中逐个创建的,但是当循环迭代完成时,它们会立即添加到布局中。 /> //这里是代码......

 public void Add_Button(View view){
        final MediaPlayer mediaPlayer=MediaPlayer.create(getApplicationContext(),R.raw.button_sound);
        gridlayout= (GridLayout) findViewById(R.id.layout);
        animation= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.scale_button);
        for(int i=0;i<10;i++) {
            Button button = new Button(MainActivity.this);
            button.setText(i+1 + "");
            button.setPadding(10,10,10,10);
            GridLayout.LayoutParams params = new GridLayout.LayoutParams();
            params.height=70;
            params.width=70;
            params.topMargin = 10;
            params.leftMargin = 10;
              *//after one 1 second i want to add button*
            try {
                Thread.sleep(1000);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            button.setLayoutParams(params);
            button.setAnimation(animation);
            mediaPlayer.start();
            gridlayout.addView(button);
        }

        }

2 个答案:

答案 0 :(得分:0)

问题的简单解决方案可能是使用View类的postDelayed

for(int i = 0; i < 10; i++) {
    final Button button = new Button(MainActivity.this);
    ...
    gridlayoyt.postDelayed(new Runnable() {

        @Override
        public void run(){
            gridlayout.addView(button);
        }

    }, i * 1000);

}

答案 1 :(得分:0)

您可以像这样添加

LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
layout.setOrientation(LinearLayout.VERTICAL);  //Can also be done in xml by android:orientation="vertical"

for (int i = 0; i < 3; i++) {
    LinearLayout row = new LinearLayout(this);
    row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

    for (int j = 0; j < 4; j++ {
        Button btnTag = new Button(this);
        btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        btnTag.setText("Button " + (j + 1 + (i * 4));
        btnTag.setId(j + 1 + (i * 4));
        row.addView(btnTag);
    }

    layout.addView(row);
}