2016-07-25 69 views
0

我想在创建按钮时逐个动态地将按钮添加到网格布局,但在我的情况下,按钮是通过每次迭代逐个创建的,但它们一次添加到布局当循环迭代完成时。
//这里是代码...如何在运行时将按钮添加到布局

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); 
     } 

     } 
+0

你的问题不明确。使用当前代码有什么问题? –

+0

检查此问题http://stackoverflow.com/questions/13532084/set-rowspan-or-colspan-of-a-child-of-a-gridlayout-程序化可能有助于完整 –

+0

您不应该暂停主线程来实现一个简单的动画。 –

回答

0

一个简单的解决问题的方法可以是使用视图类的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); 

} 
+0

谢谢这就是我想要的 – Arsalan

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); 
} 
相关问题