2013-07-26 18 views
1

我有一個生成一個表視圖內的按鈕的應用程序,如下所示:Android的 - 組按鈕tablerow的內部編程寬度

TableLayout table = (TableLayout) findViewById(R.id.tableLayout1); 

    for(int i = 0 ; i < Gatorade.getVariant().length ; i++){ 
      int buttonsInRow = 0; 
      int numRows = table.getChildCount(); 

      TableRow row = null; 

      if(numRows > 0){ 
       row = (TableRow) table.getChildAt(numRows - 1); 
       buttonsInRow = row.getChildCount();   
      } 

      if(numRows == 0 || buttonsInRow == 3){ 
       row = new TableRow(this); 
       table.addView(row); 
       buttonsInRow = 0; 
      } 
      if(buttonsInRow < 3){ 
       Button b = new Button(this); 
       b.setText(Gatorade.getVariant()[i]); 
       //b.setWidth(pixels) 
       //b.setWidth() 

       row.addView(b, 100, 50); 

      } 
} 

是否有以編程方式設置按鈕寬度wrap_content和高度match_parent的方式?

如果這是不可能的,有沒有辦法以編程方式均勻地將行中的按鈕分開?

謝謝。在按鈕

LayoutParams lp = new TableRow.LayoutParams(android.widget.TableRow.LayoutParams.WRAP_CONTENT,android.widget.TableRow.LayoutParams.MATCH_PARENT); 
btn.setLayoutParams(lp); 

嘗試使用重量:

回答

2

嘗試。給錶行權重= 10。並根據您的需求將其分爲按鈕。像btn1.weight = 3; btn2.weight = 5; btn3.weight = 2;這就像在HTML中使用%。如果您設置 權值= 10,這意味着它將使用其父視圖的100%。並且按鈕的weight = 3意味着它將使用總行數的3/10。它僅適用於寬度,因此您需要爲您分配權重的每個視圖設置width = 0。

體重用這樣的:

LayoutParams lp = new TableRow.LayoutParams(0,android.widget.TableRow.LayoutParams.MATCH_PARENT,3f); 

其中3F爲重。但第一個setweight總和爲10在表中。

希望它有助於!

+0

非常感謝。但是,按鈕內容似乎太長,第三行幾乎不再可見。關於如何在表格行中均勻分佈按鈕的任何想法? – Razgriz

+0

嘗試使用加權法 – Nicholas

+0

請參閱編輯的代碼。 –