2013-04-12 53 views
0
public class MainActivity extends Activity { 
    int i,j; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.HORIZONTAL); 
     layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
     LinearLayout layout2 = new LinearLayout(this); 
     layout2.setOrientation(LinearLayout.HORIZONTAL); 
     layout2.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); 
     LinearLayout layout1 = new LinearLayout(this); 
     layout1.setOrientation(LinearLayout.VERTICAL); 
     layout1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

        for(j=0;j<5;j++){ 
       Button myButton = new Button(this); 
       myButton.setText(""+j); 
       myButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
       myButton.setTextSize(20); 
       layout.addView(myButton);     
     } 
        layout1.addView(layout); 
        for(j=5;j<10;j++){ 
         Button myButton = new Button(this); 
         myButton.setText(""+j); 
         myButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
         myButton.setTextSize(20); 
         layout2.addView(myButton);      
       } 
        layout1.addView(layout2); 

     setContentView(layout1); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 
} 

以上是我的代碼。我可以動態創建兩列5列的按鈕。但在這裏,我必須手動創建行佈局(layout,layout2)。我想我會定義一個linearlayout數組。但是當我嘗試指定setOrientation和setLayoutParams時,程序崩潰。 我試過在android上動態添加按鈕行和列?

layout3[0].setOrientation(LinearLayout.HORIZONTAL); 

但程序崩潰。

+0

「程序崩潰」是什麼意思?它會引發logcat中的任何異常嗎? – Smit

+0

我是新來的這個領域。我的意思是,當我嘗試運行程序時就意味着崩潰。它會在黑色框中顯示「程序意外停止工作」的錯誤。我檢查了logcat它有一些像android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) –

+0

這沒關係。 +1你得到了你的問題的答案。下次請添加例外,它會告訴你很多關於哪裏和哪裏出問題的信息。 – Smit

回答

1

它實際上是簡單

你需要指定

layout3[i] = new LinearLayout(this); 
      layout3[i].setOrientation(LinearLayout.HORIZONTAL); 
      layout3[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

然後,它的工作原理。