Установить вес (в процентах) программно - PullRequest
12 голосов
/ 04 сентября 2011

У меня есть две кнопки, которые я хочу динамически взвешивать, чтобы отдать предпочтение.Каждый из них начинается с веса 0,5 (что, конечно, добавляет к весу LinearLayout 1), но если предпочтение истинно, то я бы хотел изменить их веса на 0,7 и 0,3 соответственно.Я могу установить вес в XML, но я не могу найти, как изменить его программно.


Решение

LinearLayout.LayoutParams PO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .60f);
LinearLayout.LayoutParams MO = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, .20f);

Ответы [ 3 ]

9 голосов
/ 04 сентября 2011

Просмотр LayoutParams , в нем есть поле для установки веса

3 голосов
/ 27 июля 2013

Используйте это для переработки объекта LayoutParam:

((LinearLayout.LayoutParams) view.getLayoutParams()).weight = 0.2f;
view.refreshDrawableState(); // This is to explicit force the refresh.
2 голосов
/ 22 сентября 2013

Если конструктор с шириной, высотой и весом не работает, попробуйте использовать конструктор с шириной и высотой. А затем вручную установите вес.

И если вы хотите, чтобы ширина была установлена ​​в соответствии с весом, установите ширину как 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...