2013-05-11 40 views
-1

我已經做了一些研究,但我發現的答案對我無效。這是我的代碼的一部分。該R.id.relative是在XML中的RelativeLayout的ID文件動態地將項目放在RelativeLayout中

RelativeLayout RL = (RelativeLayout) findViewById(R.id.relative); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

    TextView title = new TextView(this); 
    title.setText(" History "); 
    title.setId(99099); 
    title.setTextSize(30); 
    title.setGravity(Gravity.CENTER); 
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    title.setLayoutParams(params); 

    RL.addView(title); 

    RelativeLayout.LayoutParams test_params = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 

    Button test = new Button(this); 
    test.setText(" Back "); 
    test_params.addRule(RelativeLayout.BELOW,99099); 
    test.setId(199291); 
    test.setGravity(Gravity.CENTER); 
    test.setLayoutParams(test_params); 

    RL.addView(test); 

    RelativeLayout.LayoutParams test_params2 = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 

    Button test2 = new Button(this); 
    test2.setText(" Clear "); 
    test_params2.addRule(RelativeLayout.BELOW,test.getId()); 
    test2.setGravity(Gravity.CENTER); 
    test.setLayoutParams(test_params2); 

    RL.addView(test2); 

所有3個項目都出現了,但他們堆疊在一起。我無法讓他們低於另一個。 任何人都可以幫忙嗎?

+0

你認爲Android忽略你的規則 - 'addRule(RelativeLayout.BELOW,title.getId());'? – Axarydax 2013-05-11 05:28:21

+0

將title.getId()更改爲99099的id值時會發生什麼? – Axarydax 2013-05-11 05:29:28

+0

雅仍然是相同的,現在我試圖將參數放入addview方法。 – user2372160 2013-05-11 07:57:58

回答

-1

已添加導致您的觀點將被堆疊together.If你需要添加它應該由以下規則使用的規則。

test_params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1); 

接下來,視圖添加到您的RelativeLayout與你的LayoutParams:

RL.addView(yourAdView, rLParams); 

同樣適用於每個cases.try到run.It將解決您的問題

+0

rLParams是否等於test_params? 我應該像這樣:** RL.addView(Btn1,test_params); ** – user2372160 2013-05-11 07:54:20

+0

哦,它的工作原理,使用addView來設置佈局是正確的 – user2372160 2013-05-11 08:11:40

+0

感謝您的評論......我仍然對我的評論得到了反對票。謝謝你的讚賞 – Chiradeep 2013-05-11 08:30:26

0

變化test.setLayoutParams(test_params2);test2.setLayoutParams(test_params2);

說明:您在不經意間設置的test佈局PARAMS第二次,與指示它PARAMS將低於本身,我想只是把它左上角(默認放置在一個RelativeLayout)。既然你從不給test2任何佈局參數,它也會得到默認的位置。所以一切都在頂端,因此出現在彼此之上。順便說一下,如果你只是想讓它們線性排列,爲什麼不使用垂直LinearLayout

+0

爲什麼這是低調? – Karakuri 2013-05-11 05:47:56

+0

+1的好解釋 – AndroidDev 2013-05-11 07:22:01

1

從我已經能夠發現,你必須添加視圖使用LayoutParams。這裏有一個例子:

LinearLayout linearLayout = new LinearLayout(this); 

RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

parentView.addView(linearLayout, relativeParams); 

並以編程方式,你必須分配ID它們相對定位您的項目,這將停止他們「重疊」。

TextView tv1 = new TextView(this); 
tv1.setId(1); 
TextView tv2 = new TextView(this); 
tv2.setId(2); 

然後addRule(RelativeLayout.RIGHT_OF, tv1.getId());

+0

我很好奇這行:** parentView.addView(linearLayout,relativeParams); **這是否意味着我把另一個RelativeLayout放到我的佈局在xml文件中。 – user2372160 2013-05-11 07:06:26

+1

是;這只是一個例子 – AndroidDev 2013-05-11 07:22:42

相關問題