2012-06-23 32 views
7

Tôi đang gặp sự cố với Android. Tôi đang thiết lập tham số Weight trong Java, nhưng nó làm chính xác oposite của những gì tôi muốn.Android: Đặt thông số Trọng số theo chương trình ngược lại với những gì tôi muốn

Dưới đây là đoạn 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); 

Tôi lặp lại quá trình này 7 lần với việc thêm một đường màu đen giữa bố trí thùng sơn. Thông thường tôi sẽ nhận được một cột nhỏ màu đỏ trên lef, và một màu đen lớn, nhưng đây là những gì tôi nhận được với mã này:

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

Tại sao nó làm hoàn toàn ngược lại của mã?

Cảm ơn các bạn đã giúp đỡ.

+0

bạn đang cố gắng làm gì? chủ yếu là màu đen với chỉ một chút màu đỏ? Nếu chỉ cần chuyển đổi các giá trị trọng số của bạn, bạn sẽ bị lạc hậu. – FoamyGuy

+0

thử với chiều rộng 0 cho trẻ em –

+1

@DheereshSingh Tuyệt vời! nó làm việc với chiều rộng 0 cho trẻ em. Cảm ơn rất nhiều! :) – Firas

Trả lời

11

Khi chúng ta sử dụng độ rộng cân nên Zero,

thử với chiều rộng 0 cho với trẻ em bên trong container .............

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



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

Cảm ơn bạn, nó hoạt động rất tốt! – Firas

+0

Luôn chào mừng ...... :) –

1

Bạn đang thiết cả hai chiều rộng đến "wrap_content" ... khi sử dụng trọng số, bạn nên đặt hướng bị ảnh hưởng thành "0dp" (hoặc tương đương với chương trình).

+0

Đúng, nó hoạt động với việc đặt chiều rộng của trẻ em thành 0dp. Cảm ơn! – Firas

+0

Điều này đã giết chết tôi quá. Nhưng điều kỳ lạ là tại sao nó ngược lại khi sử dụng WRAP_CONTENT? –

Các vấn đề liên quan