2011-03-16 29 views
7

我很難讓兩個文本視圖在我的java代碼中出現在彼此的頂部。下面是我與試驗驗證碼:在java代碼中設置RelativeLayout

/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 

     layout = new RelativeLayout(this); 
     text1 = new TextView(this); 
     text1.setText("1"); 
     text2 = new TextView(this); 
     text2.setText("2"); 

     RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
     RelativeLayout.LayoutParams q = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 

     q.addRule(RelativeLayout.BELOW, layout.getId()); 
     text1.setLayoutParams(q); 
     layout.addView(text1); 


     p.addRule(RelativeLayout.BELOW,text1.getId()); 
     text2.setLayoutParams(p); 
     layout.addView(text2); 

     setContentView(layout); 
    } 

這堆在同一行的兩個文本的意見,但我想TextView的文本2,出現以下TextView的文本1,所以在我的應用我想下面顯示爲輸出:

1 
2 

我試過所有與「addRule」方法的東西,我不知道爲什麼這不起作用。我想知道如何在沒有XML的情況下做到這一點,因爲我打算建立一個方法庫,可以建立一個可以通過編輯數組輕鬆調整的佈局。

+2

接受一些答案你以前的問題 – 2011-03-16 15:05:43

回答

8

TextViews沒有一個ID(默認ID是-1)...把這個自己的初始化後:

text1.setId(1111); // 1111 is just an example, 
text2.setId(2222); // just make sure the id are unique 
+0

哦,我的,那工作! – 2011-03-16 15:22:21

2

我不認爲你正在尋找佈局在RelativeLayout下面的text1視圖,因爲你將所有的視圖添加到它作爲孩子,對吧?嘗試刪除第一條規則;該規則是要求文本視圖低於它所處的相同視圖。

編輯:另外一個幫助是明確設置你正在佈局相對於視圖的ID。

所以在這裏:

text1.setId(2); 
p.addRule(RelativeLayout.BELOW,2); 
+0

帶或不帶layout_below = 「的上述文本視圖ID」的部分去掉它似乎工作。不過,我認爲你是對的,最好不要將它設置在相對佈局下方。 – 2011-03-16 15:22:58

0

您可以使用XML這個佈局:

在相對佈局 你設置第一個textview併爲它分配一些id fot下一個文本vi EW我們可以指定參數 的android:這樣,我們得到以下1文本視圖第2個文本視圖

相關問題