2011-08-28 102 views
2

所以我有一個水平模式下的LinearLayout,我隨時在代碼中添加按鈕,我喜歡它們全部填充空間。LinearLayout中的按鈕無法以編程方式填充整個空間

這是我當前的代碼至今:

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams.gravity = Gravity.FILL; 

,我把它添加到我的觀點在這裏:

linearLayout.addView(button, layoutParams); 

它所做的就是添加按鈕,如果它是wrap_content,而不是擴大他們的寬度來填充可用空間,如按鈕看起來左對齊。

我也試過linearLayout.setGravity(Gravity.FILL_HORIZONTAL);

linearLayout.setWeightSum(++weightSum); 
linearLayout.addView(button, layoutParams); 

其中layoutParams在這種情況下是:

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT, 1); 

我也試過每答案的佈局寬度設置爲零到其他問題。

我是否缺少另一種技術?

編輯:我想通了,我忘了將LinearLayout的寬度設置爲match_parent而不是wrap_content

回答

3

Button的背景具有「邊距」,所以即使按鈕之間沒有空間,它們也會始終存在間隙。您必須將背景更改爲您自己的圖像,該圖像沒有這些邊距。

編輯:你應該使用按鈕的權重。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      0, LayoutParams.WRAP_CONTENT); 
    params.weight = 1; 
    for(int i = 0; i < 5; ++i) { 
     Button button = new Button(this); 
     button.setText("Button" + (i + 1)); 
     linearLayout.addView(button, params); 
    } 
+0

空白是好的,但問題是按鈕不擴大填補可用空間,所以所有的按鈕看起來像他們左對齊。 – Jasoneer

+0

對不起,我誤解了你的問題。這裏有一個更新的答案。 – Michael

+0

我想我已經嘗試過了,包括將寬度設置爲0.它不起作用:( – Jasoneer

相關問題