Я пытаюсь динамически создавать TableRow
объекты и добавлять их в TableLayout
. Объект TableRow
имеет 2 предмета, а TextView
и а CheckBox
. TextView
элементов необходимо установить вес макета равным 1, чтобы CheckBox
элементы перемещались вправо.
Я не могу найти документацию о том, как программно установить вес макета TextView
элемента.
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
следует использовать вместоTableLayout.LayoutParams
. Смотрите ответ @ Дордже.Ответ заключается в том, что вы должны использовать TableRow.LayoutParams, а не LinearLayout.LayoutParams или любые другие LayoutParams.
Различные LayoutParams не являются взаимозаменяемыми, и если вы используете неправильный, то, похоже, ничего не произойдет. Родитель текстового представления является строкой таблицы, следовательно:
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
источник
LayoutParams
TableRow.LayoutParams
сделал работу для меня тожеВ предыдущих ответах вес передается в конструктор нового объекта SomeLayoutType.LayoutParams. Однако во многих случаях удобнее использовать существующие объекты - это помогает избежать работы с параметрами, которые нам не интересны.
Пример:
источник
1f обозначает вес = 1; Вы можете дать 2f или 3f, представления будут перемещаться в соответствии с пространством
источник
просто установите параметры макета в этом макете, как
создать переменную param
1f - переменная веса
установить виджет или макет как
источник
LinearLayout.LayoutParams
конструктора. 3-й параметр - вес. Или документация(ИЛИ)
1f упоминается как вес = 1; в соответствии с вашими потребностями вы можете задать 2f или 3f, представления будут перемещаться в соответствии с пространством. Для создания заданного расстояния между видами в линейном макете используйте весовую сумму для «LinearLayout».
источник
Это должно работать для вас
источник
Вы также можете дать вес отдельно, как это,
источник
Это работает для меня, и я надеюсь, что это будет работать и для вас
Сначала установите LayoutParams для родительского представления:
затем установите для TextView (дочерний):
источник
Есть еще один способ сделать это. В случае, если вам нужно установить только один параметр, например, «высота»:
источник
После борьбы в течение 4 часов. Наконец, этот код работал для меня.
3 столбца там в ряд.
источник
У меня было довольно много трудностей с решением, очень похожим на это: попытка иметь две кнопки в TableRow, каждая из которых имеет половину ширины экрана. По какой-либо причине левая кнопка всегда будет составлять около 70% ширины, а правая кнопка - 30%. Вызов table_layout.setStretchAllColumns (true) не имел никакого эффекта, равно как и установка ширины кнопки равной половине экрана, а также установка веса макета.
Решение , которое я закончил с была вложенности в LinearLayout в TableRows, что было принимать во внимание значение ширины кнопки.
источник
layout_width=fill_parent
, а после этого установитьlayout_weight=1
для button1 и button2. Все элементы с fill_parent и layout_weight = 1 будут иметь одинаковый размер при инфляции.