Как установить значение для атрибута layout_weight
для кнопки в android динамически из java-кода?Как установить атрибут layout_weight динамически из кода?
ответ
Вы можете передать его в качестве части LinearLayout.LayoutParams
конструктора:
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT,
1.0f
);
YOUR_VIEW.setLayoutParams(param);
Последний параметр является вес.
Использование LinearLayout.LayoutParams
:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
Button button = new Button(this);
button.setLayoutParams(params);
EDIT: Ах, ответ Эриха проще!
Эфир Erich может быть проще писать, но ваш читать легче. Поскольку он говорит, для какого атрибута используется 1.0f. – Johan
ваш установлен, что вы можете изменить вес «на лету», вызвав «view.getLayoutParams()», а затем измените значение. – RobGThai
'FILL_PARENT' устарел, и вместо этого следует использовать' MATCH_PARENT'. –
Любое из LinearLayout.LayoutParams
и TableLayout.LayoutParams
работало для меня, для кнопок справа TableRow.LayoutParams
. То есть:
TableRow.LayoutParams buttonParams = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT, 1f);
Об использовании MATCH_PARENT
или WRAP_CONTENT
быть одинаковыми.
'FILL_PARENT' устарел, и вместо него следует использовать MATCH_PARENT'. –
Я думаю, что LayoutParams.MATCH_PARENT следует изменить на 0. – CoolMind
Если конструктор с шириной, высотой и весом не работает, попробуйте использовать конструктор с шириной и высотой. А затем вручную установите вес.
И если вы хотите, чтобы ширина была задана в соответствии с весом, установите ширину как 0 в конструкторе. То же самое относится и к высоте. Ниже код работает для меня.
LinearLayout.LayoutParams childParam1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);
childParam1.weight = 0.3f;
child1.setLayoutParams(childParam1);
LinearLayout.LayoutParams childParam2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT);
childParam1.weight = 0.7f;
child2.setLayoutParams(childParam2);
parent.setWeightSum(1f);
parent.addView(child1);
parent.addView(child2);
Только то, что мне нужно! Каждый говорит о настройке веса здесь, никто не показывал, что происходит, когда взвешенные дети добавляются в родительский вид! Я действительно искал, как добавить weightSum в ParentView! Благодаря! – sud007
Если вы уже определить свой вид в файле макет (XML), только нужно изменить вес программно, таким образом, лучше
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)
mButton.getLayoutParams();
params.weight = 1.0f;
mButton.setLayoutParams(params);
нового LayoutParams перезаписывает другой Params, определенный в вас XML как поля, или вам нужно указать все их в LayoutParams.
С "params.weight = 1f;" вы уже устанавливаете вес объекта LayoutParams. Нет необходимости называть «mButton.setLayoutParams (params)». – MrMaffen
Нет, вам нужно позвонить setLayoutParams –
Это на самом деле самый элегантный ответ, и он напрямую изменяет определенный объект пользовательского интерфейса. Лучший ответ тоже хорош и старше, чем этот пост. Поэтому он заслуживает лучшего ответа. Я сохранил этот пост, хотя. –
Если я кого-то ищет ответ, используйте:
LinearLayout.LayoutParams lay = (LinearLayout.LayoutParams) myLayout.getLayoutParams();
lay.weight = 0.5;
Если инициализация макета из XML-файла, это будет гораздо удобнее, чем предоставление новых параметров макета для Linear Layout.
Это должен быть принятый ответ, поскольку он не изменяет ранее установленные переменные, такие как ширина/высота/маржа/отступы и т. Д. Все сохраняется и повторно используется при изменении веса. – MrMaffen
Если представление для установки 'layout_weight' уже выложено, вам нужно вызвать' View.requestLayout() 'для обновления. – Suzi
Если у вас есть , то вы уже определили свой вид в макете (xml) и хотите только похудеть, а затем создание новых LayoutParams перезаписывает другие параметры, определенные в вашем XML-файле.
Итак, сначала вы должны использовать "getLayoutParams", а затем setLayoutParams
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mButton.getLayoutParams(); params.weight = 4f; mButton.setLayoutParams(params);
- 1. Динамически меняет атрибут кода
- 2. установить атрибут свойства динамически
- 3. установить свойство управления динамически из файла кода
- 4. Как динамически установить атрибут id элемента HTML?
- 5. Как установить атрибут действия динамически в гиперссылку?
- 6. Динамически установить атрибут SELECT в zend2
- 7. Как динамически назвать атрибут?
- 8. Установить атрибут html id динамически в Twig
- 9. android: canRequestTouchExplorationMode динамически из кода
- 10. Как переделать layout_weight?
- 11. Как установить android: layout_width = "match_parent" из кода?
- 12. Как динамически установить атрибут Zingchart в Angular ng-Repeat
- 13. Как динамически установить атрибут data-title для ячеек таблицы asp
- 14. Как установить отдельный атрибут для динамически создаваемого элемента
- 15. Атрибут атрибута сценария динамически
- 16. как установить «app: layout_columnWeight» из кода?
- 17. Laravel 5 Eloquent, Как установить атрибут произнесения динамически
- 18. Как динамически установить атрибут «значение» тега url в struts2?
- 19. Угловые 2 - Как установить идентификатор атрибут в динамически загружаемый компонент
- 20. Как установить атрибут Идентификатор HTML-элемента динамически Thymeleaf
- 21. Как установить атрибут name для динамически созданного div? .. в jQuery
- 22. Как установить атрибут для кода отношения «ко многим ко многим»?
- 23. Как установить атрибут native из директивы AngularJS?
- 24. PayPal как установить атрибут subtotal из приложения
- 25. Как установить атрибут сеанса из скрытого поля?
- 26. Disable Обязательный атрибут из кода за
- 27. Как получить layout_weight программно?
- 28. jquery.getScript - как установить атрибут?
- 29. Как установить атрибут owinstartup?
- 30. Как заполнить ListPreference динамически из кода?
Это будет очень похож на этот вопрос/ответ: http://stackoverflow.com/questions/4638832/how-to -programmatically-set-the-layout-align-parent-right-attribute-of-a-button-i/4639012 # 4639012, и этот: http://stackoverflow.com/questions/4637233/how-to-set- layout-span-through-code/4637266 # 4637266 – Qberticus
Если вы уже определили представление в макете (xml), то создание новых LayoutParams перезаписывает другие параметры, определенные в XML-файле. Поэтому сначала вы должны использовать «getLayoutParams». См. Полный ответ http://stackoverflow.com/questions/4641072/how-to-set-layout-weight-attribute-dynamically-from-code/38011495#38011495 –