Android: Setting the Weight parameter programmatically does the opposite of what i want

☆樱花仙子☆ 提交于 2019-12-10 03:52:14

问题


I'm having a problem with android. I'm setting the Weight parameter in Java, but it's doing exactly the oposite of what I want.

Here's the code

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

I repeat this process 7 times with adding a black line between the container layout. Normally I should get a small red column on the lef, and a large black one, but here's what I get with this code :

Why does it doing exactly the opposite of the code ?


回答1:


When we use the weight width should be Zero

try with width 0 for with children inside the container.............

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



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



回答2:


You are setting both widths to "wrap_content"... when using weights you should set the affected orientation to "0dp" (or it's programatic equivalent).



来源:https://stackoverflow.com/questions/11170164/android-setting-the-weight-parameter-programmatically-does-the-opposite-of-what

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!