我有两个按钮,我想动态加权给予偏好。他们每个人的权重都是.5(这当然会增加LinearLayout的权重为1),但如果偏好是真的,那么我想将他们的权重分别改为.7和.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);
答案 0 :(得分:9)
查看LayoutParams,它有一个用于设置权重的字段
答案 1 :(得分:3)
使用它来回收LayoutParam
对象:
((LinearLayout.LayoutParams) view.getLayoutParams()).weight = 0.2f;
view.refreshDrawableState(); // This is to explicit force the refresh.
答案 2 :(得分:2)
如果宽度,高度和重量的构造函数不起作用,请尝试使用宽度和高度的构造函数。然后手动设置重量。
如果要根据权重设置宽度,请在构造函数中将width设置为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);