Intereting Posts
Приложение не отображается на устройствах с подсветкой (только на неамазонных устройствах) SQLite DatabaseUtils.queryNumEntries не работает на реальном устройстве, но работает на эмуляторе PerferenceActivity с PreferenceFragment не работает на устройстве с proguard в порядке без proguard Android TextView Wrap Представление интерфейса пользовательского интерфейса для Ember.js HTM5 => Приложение «Телефонный зазор» (или альтернативный стек) SetEmptyView в ListView не работает Совместное использование текста в facebook с намерением использовать Android Стиль кнопки Google google maps Проект изнашивания Android с 3 ароматами, 3 buildTypes и 2 applicationIdSuffixes Есть ли код для Snackbars в Android L или мы ожидаем, что они сами их реализуем? Вложенные фрагменты исчезают во время переходной анимации Как создать предпочтение, которое принимает только целочисленные значения SetSelection не меняет позицию ListView Создание цифрового виджета с пользовательским шрифтом Android N Предварительный просмотр эмулятора аварии

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);