2014-11-05 191 views
1

我想動態添加2 buttons到我的relative layout。我希望它看起來像這樣:Android:動態添加按鈕佈局

enter image description here

但目前看起來是這樣的:

enter image description here

隨着@Abdallah Alaraby的幫助:

myButton1 = new Button(this); 
    myButton1.setBackgroundResource(R.drawable.button); 
    myButton1.setText("bttn1"); 

    myButton2 = new Button(this); 
    myButton2.setBackgroundResource(R.drawable.button); 
    myButton2.setText("bttn2"); 


    RelativeLayout rl = (RelativeLayout)findViewById(R.id.rl_dynamic_bttn); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 

lp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
lp.addRule(RelativeLayout.RIGHT_OF, myButton2.getId()); 
rl.addView(myButton1, lp1); 
rl.addView(myButton2, lp); 
... 
... 

} 

我嘗試過各種不同的allignment選項,但似乎沒有任何工作。任何人都知道我可以如何讓這看起來像第一張照片?

問題可能是my_button2.getId()?也許它不被識別?

+1

最好在xml中添加這兩個按鈕,並將可見性設置消失。根據需要使其可見 – 2014-11-05 19:23:40

+0

您正在將您的錨視圖設置爲與您的每個視圖相同(myButton2)。但是我也同意@Indra,將它們添加到xml中並使用Visibility可以輕鬆完成。 – zgc7009 2014-11-05 19:25:50

+0

這是一個有趣的方法,但我希望根據用戶輸入添加按鈕。就像用戶輸入5一樣,我添加5個按鈕。第1行可能有5個按鈕,第2行可能有10個按鈕,第3行可能只有1個按鈕...所以我不能讓一噸按鈕看不見......這太浪費空間了...所以我想要動態添加 – user2456977 2014-11-05 19:26:33

回答

2
lp.addRule(RelativeLayout.RIGHT_OF, myButton2.getId()); 
rl.addView(myButton1, lp); 
rl.addView(myButton2, lp); 

您使用的是相同的規則兩個按鈕,請嘗試以下操作:

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 

myButton1.setId(1) 
lp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
lp.addRule(RelativeLayout.RIGHT_OF, myButton2.getId()); 
rl.addView(myButton1, lp1); 
rl.addView(myButton2, lp); 

如果myButton2不具有分配的ID,默認密碼是-1,它不會工作。你必須在使用myButton2.getId()之前使用myButton2.setId(int)

+0

非常感謝@Abdallah。你讓我非常接近解決方案。看看我原來的帖子。我用你的代碼編輯它,我添加了一些圖片的解釋。你能幫我達到理想的佈局嗎? – user2456977 2014-11-05 20:18:31

+0

您只需使用'ALIGN_PARENT_LEFT'而不是'ALIGN_PARENT_RIGHT',我修改了我的答案以滿足您的需要 – 2014-11-05 20:23:55

+0

但它仍然無法正常工作......它看起來像第二張圖片,只是在左側my_button1和my_button2全部方式在右邊。他們仍然不是並排的。 – user2456977 2014-11-05 20:29:12