7

我的安卓有问题。我在 Java 中设置 Weight 参数,但它的作用与我想要的完全相反。

这是代码

LinearLayout container = new LinearLayout(context);
// some code ...
container.setWeightSum(1f);

View v1 = new View(context);
v1.setBackgroundColor(Color.parseColor("#ff0000"));
LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
p1.weight=0.1f;

View v2 = new View(context);
v2.setBackgroundColor(Color.parseColor("#000000"));
LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
p2.weight=0.9f;

container.addView(v1,p1);
container.addView(v2,p2);

我重复这个过程 7 次,在容器布局之间添加一条黑线。通常我应该在左边得到一个小的红色柱子,和一个大的黑色柱子,但这就是我用这段代码得到的:

http://i.stack.imgur.com/PPgoy.png

为什么它与代码完全相反?

4

2 回答 2

11

当我们使用权重宽度应该为零

尝试将宽度 0 用于容器内的孩子......

 LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);



LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
于 2012-06-23T14:22:33.190 回答
1

您将两个宽度都设置为“wrap_content”......使用权重时,您应该将受影响的方向设置为“0dp”(或者它是程序等效的)。

于 2012-06-23T14:23:29.370 回答