Android - 以编程方式在tablerow中设置按钮宽度

时间:2013-07-26 04:52:26

标签: android button tablelayout 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

如果无法做到这一点,有没有办法以编程方式均匀地分隔行中的按钮?

感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

尝试使用按钮重量。给表行weightum = 10。并根据您的要求将其分为按钮。比如btn1.weight = 3; btn2.weight = 5; btn3.weight = 2;这就像在HTML中使用%。如果你设置 weightsum = 10表示它将使用100%的父视图。并且使用权重= 3表示按钮意味着它将使用总行大小的3/10。它仅用于宽度,因此您需要为分配权重的每个视图设置width = 0.

这样的重量使用:

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

其中3f是重量。但是在tablerow中,第一个setweight为10。

希望它能帮助!!!