Как я могу установить значение атрибута layout_weight
для кнопки в Android динамически из Java-кода?
246
Как я могу установить значение атрибута layout_weight
для кнопки в Android динамически из Java-кода?
Ответы:
Вы можете передать его как часть
LinearLayout.LayoutParams
конструктора:Последний параметр - вес.
источник
param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, (float) 1.0);
1f
если нет десятичных разрядовRelative
Используйте
LinearLayout.LayoutParams
:РЕДАКТИРОВАТЬ: Ах, ответ Эриха легче!
источник
FILL_PARENT
устарела иMATCH_PARENT
должна использоваться вместо.MATCH_PARENT
его можно использоватьFILL_PARENT
даже на старых устройствах.FILL_PARENT
противMATCH_PARENT
.Если вы уже определили свое представление в файле макета (XML), хотите только изменить вес программным способом, этот способ лучше
new a LayoutParams перезаписывает другие параметры, определенные в вашем XML-файле, такие как поля, или вам нужно указать все их в LayoutParams.
источник
Если конструктор с шириной, высотой и весом не работает, попробуйте использовать конструктор с шириной и высотой. А затем вручную установите вес.
И если вы хотите, чтобы ширина была установлена в соответствии с весом, установите ширину как 0 в конструкторе. То же относится и к высоте. Ниже код работает для меня.
источник
Если мне кто-то ищет ответ, воспользуйтесь этим:
Если вы инициализируете макет из XML-файла, это будет гораздо удобнее, чем предоставление новых параметров макета для линейного макета.
источник
layout_weight
уже выложен, необходимо позвонить,View.requestLayout()
чтобы обновить.Любой из
LinearLayout.LayoutParams
иTableLayout.LayoutParams
работал для меня, для кнопок правильныйTableRow.LayoutParams
. То есть:Об использовании
MATCH_PARENT
илиWRAP_CONTENT
будь таким же.источник
FILL_PARENT
устарела иMATCH_PARENT
должна использоваться вместо.LayoutParams
прямым родителем. Я предполагаю, что у вас был сбой при попытке использоватьLinearLayout.LayoutParams
без родителяLinearLayout
.Если вы уже определили свое представление в файле макета (xml) и хотите только программно изменить вес , то при создании нового LayoutParams будут перезаписаны другие параметры, определенные в вашем XML-файле.
Итак, сначала вы должны использовать «getLayoutParams», а затем setLayoutParams
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
источник
Если
layoutparams
это уже определено (в XML или динамически), вот одна строка:источник
Используя Kotlin, вы можете сделать что-то вроде:
источник