2012-06-23 1 views
7

アンドロイドに問題があります。 私はWeightパラメータをJavaで設定していますが、それは私が望むものの正確なものです。Android:プログラムでウェイトパラメーターを設定すると、私が望むものの逆になります

ここでは、コンテナのレイアウトとの間の黒線を追加することで、このプロセスを7回繰り返しコード

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

です。 は、通常、私はLEFに小さな赤い列、および大規模な黒の1を取得する必要がありますが、ここで私はこのコードを取得するものです:

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

は、なぜそれがコードの正反対をやっていますか?

あなたの助けを借りてくれてありがとう。

+0

あなたは何を達成しようとしていますか?ほとんど黒で、赤は少ししかありませんか?あなたの体重値を切り替えるだけなら、あなたは後ろ向きです。 – FoamyGuy

+0

子どもと一緒に幅0で試してください –

+1

@DheereshSingh素晴らしい!それは子供のための幅0で働いた。どうもありがとう! :) – Firas

答えて

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

ありがとう、それは非常にうまくいった! – Firas

+0

いつも歓迎...... :) –

1

を試みるべきである使用するときに設定されています両方の幅を "wrap_content"に設定する...ウェイトを使用するときは、影響を受ける方向を "0dp"(またはこれと同等のプログラム)に設定する必要があります。

+0

うん、それは0dpに子供の幅を設定して働いた。ありがとう! – Firas

+0

これも私を殺していた。しかし、奇妙なことは、WRAP_CONTENTを使用すると正反対なのはなぜですか? –

関連する問題