Android:以编程方式设置权重参数与我想要的相反

时间:2012-06-23 14:13:22

标签: java android android-layout android-layout-weight

我遇到了android的问题。 我在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次。 通常情况下,我应该在lef上有一个小的红色列和一个大的黑色列,但这是我用这段代码得到的:

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

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

2 个答案:

答案 0 :(得分:11)

当我们使用重量宽度时应为零

尝试使用宽度0来容纳容器内的儿童.............

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



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

答案 1 :(得分:1)

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