我遇到了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上有一个小的红色列和一个大的黑色列,但这是我用这段代码得到的:
为什么它与代码完全相反?
答案 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”(或者它的程序等效)。