Android: layout_weight не работает, когда он установлен программно

У меня проблема, когда я устанавливаю TableRow layout_weight программно. Следующий код – TableLayout завышенный в элементе table_body :

 <TableLayout android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:weightSum="1"> <TableLayout> 

Я хочу отображать только 10 строк в TableLayout .. и для этого я программно использую элементы TableRow используя этот код:

 while(i<10){ TableRow row = (TableRow) ((Activity) context).getLayoutInflater(). inflate(R.layout.body_row, table_body, false); TableRow.LayoutParams row_params = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f); table_body.addView(row, row_params); i++; } в while(i<10){ TableRow row = (TableRow) ((Activity) context).getLayoutInflater(). inflate(R.layout.body_row, table_body, false); TableRow.LayoutParams row_params = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f); table_body.addView(row, row_params); i++; } 

Body_row.xml имеет следующий код:

 <TableRow> <TextView android:text="row1" android:layout_width="match_parent" android:layout_height="match_parent"/> </TableRow> 

С помощью этого кода TableLayout не делится на 10 равных мест (как я бы хотел), но строки только переносят их содержимое с результатом пробела между концом последней строки и концом TableLayout. Что я делаю неправильно ? Спасибо!!

Чтобы заставить механизм веса работать, вам нужно использовать соответствующие LayoutParams для ваших завышенных виджетах TableRow . Поскольку родительским элементом TableRow является TableLayout вам необходимо использовать TableLayout.LayoutParams :

 TableLayout.LayoutParams row_params = new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f); table_body.addView(row, row_params);