以编程方式设置重量(百分比)

时间:2011-09-04 02:20:33

标签: android android-layout

我有两个按钮,我想动态加权给予偏好。他们每个人的权重都是.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);

3 个答案:

答案 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);