2013-03-15 52 views
0

我有3個相對佈局,我需要創建一個單獨的setcontetntview,這是這些佈局的組合,每個組合添加3次並共享相同的屏幕空間,並且需要以編程方式完成。我開始創建一個只增加2個屏幕的新佈局,多次組合3個相對佈局

RelativeLayout primaryLayout = new RelativeLayout(this); 
    LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    RelativeLayout newLayout = (RelativeLayout)layoutInflater.inflate(R.layout.layout3, null, false); 
    RelativeLayout newLayout1 = (RelativeLayout)layoutInflater.inflate(R.layout.layout4, null, false); 
    primaryLayout.addView(newLayout); 
    primaryLayout.addView(newLayout1); 
    setContentView(primaryLayout); 

這隻顯示layout4。另外,如果我再次添加相同的佈局,它給出的錯誤說明指定的孩子已經有一個家長,你必須先調用父孩子的removeview()。請幫忙!

回答

0

的原因其只顯示layout4是,primaryLayout是一個相對的佈局。除非你指定了一些信息,告訴它在佈局中的位置,否則它將全部位於左上角。因此,一切都在彼此之上。

您不能多次添加相同的佈局。您需要爲每個需要的版本重新添加一次,然後添加結果。它像OOP一樣,RelativeLayout是佈局的一個實例,膨脹實例化一個新的。

+0

感謝您的回覆,我添加了規則,但如何讓他們佔據半屏? – bharath 2013-03-15 17:45:22

0

您必須使用addRule來佈局參數來設置相對於彼此的視圖。至於關於重新添加視圖的投訴,您可以嘗試兩個獨立的視圖實例。雖然它將是相同的佈局,但家長不會知道這一點。

編輯:

要佔據你要告訴父視圖多大的空間,以配發的子視圖半屏:

RelativeLayout.LayoutParams forChild = new RelativeLayout.LayoutParams(30,40); 
childView.setLayoutParams(forChild); 
+0

感謝您的回覆,我添加了規則,但如何讓它們佔據每個半屏? – bharath 2013-03-15 18:02:37

+0

我已編輯過,以向您展示如何設置子視圖的大小。你不必使用實際的數字,你可以使用諸如'wrap_content'等東西。只是玩弄它。 – learner 2013-03-15 20:16:25