2013-11-22 80 views
0

我需要純粹使用Java創建此佈局,而不是使用XML。這意味着我在這個項目中沒有Eclipse的XML。現在我的佈局是這樣的:創建沒有XML文件的RelativeLayout

enter image description here

您可能無法從畫面,但塊0,1和3,告訴都在彼此的頂部。我需要的5塊看起來像這樣:

0 1 2 
3 4 

這是我第一次沒有使用XML文件,以使活動的佈局,所以我有搞清楚了這東西了微調一起。如果您注意到我在完成「長」的方式時可以更有效地編寫代碼,請讓我知道。

但我的問題是,爲什麼不是砌下我需要他們的順序?我覺得我在搞這個很簡單。

public class Puzzle extends Activity { 

    int z1to5 = 50; 
    int z6to10 = 50; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) {   
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.XXXXX); 

     RelativeLayout relativelayout = new RelativeLayout(getApplicationContext()); 

     Button bList[] = new Button[5]; 

     for (int i = 0; i < 5; i++) { 
      Button button = new Button(getApplicationContext()); 
      button = new Button(getApplicationContext()); 
      button.setId(i); 
      button.setText("" + i); 
      relativelayout.addView(button); 
      bList[i] = button; 
     } 

     RelativeLayout.LayoutParams params0 = new RelativeLayout.LayoutParams(150, 150); 
      bList[0].setLayoutParams(params0); 

     RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(150, 150); 
      params1.addRule(RelativeLayout.RIGHT_OF, bList[0].getId()); 
      bList[1].setLayoutParams(params1); 

     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(150, 150); 
      params2.addRule(RelativeLayout.RIGHT_OF, bList[1].getId()); 
      bList[2].setLayoutParams(params2); 

     RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(150, 150); 
      params3.addRule(RelativeLayout.BELOW, bList[0].getId()); 
      bList[3].setLayoutParams(params3); 

     RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(150, 150); 
      params4.addRule(RelativeLayout.RIGHT_OF, bList[3].getId()); 
      params4.addRule(RelativeLayout.BELOW, bList[1].getId()); 
      bList[4].setLayoutParams(params4); 

     setContentView(relativelayout); 
    } 
} 
+0

是否有你使用相對佈局而不是線性佈局的原因 –

+0

我不知道答案是什麼,但1或2個按鈕去了正確的相對位置。 (2的右邊1)(4的右邊3和1以下)。那兩個有什麼不同? –

+0

@JoshEngelsma不,沒有真正的理由。只是選擇它開始。根本不承諾。 – Matt

回答

1

我得到它的這種變化工作:

for (int i = 0; i < 5; i++) { 
     Button button = new Button(getApplicationContext()); 
     button = new Button(getApplicationContext()); 
     button.setId(i+1); 
     button.setText("" + i); 
     relativelayout.addView(button); 
     bList[i] = button; 
    } 

button.setId(i+1);

的文檔,我不能找到它,但也許當你做出一個新的瀏覽程序,默認NO_ID等於0

+0

這就像一個魅力。不知道爲什麼。也許你對默認的NO_ID是正確的。無論如何,謝謝! – Matt

+0

不客氣! :) –

+0

剛剛發現'公共靜態最終int View.NO_ID = 0xffffffff;'(-1),所以我真的不知道,但很高興它的工作! –