2013-10-03 19 views
24

Tôi muốn thêm ba bố cục tuyến tính vào một hoạt động có lập trình theo từng chiều rộng giống nhau. vấn đề là tôi không thể thiết lập trọng số của các bố cục này theo lập trình. Tôi có thể làm điều này trong xml, nhưng tôi muốn làm điều này trong chương trình. đây là những gì tôi muốn: enter image description hereBố cục tuyến tính Android Trọng lượng theo lập trình

Trả lời

38

đây của nó là giải pháp

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, 100); 
    lp.weight = 1; 

Xem Solution Full

LinearLayout ll1, ll2, ll3; 
    /* Find these LinearLayout by ID 
    i.e ll1=(LinearLayout)findViewById(R.id.ll1); 
    */ 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, 100); 
    lp.weight = 1; 
    ll1.setLayoutParams(lp); 
    ll2.setLayoutParams(lp); 
    ll3.setLayoutParams(lp); 
+1

Làm việc như sự quyến rũ, nhờ phản hồi nhanh. Tuy nhiên tôi đã phải sửa đổi nó một chút như thế này >> LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (0, LayoutParams.WRAP_CONTENT); \t \t \t \t lp.weight = 1; – Bhaijaan

5

Sử dụng new LinearLayout.LayoutParams(int width, int height, float weight) để thiết lập trọng lượng khi thiết params bố trí đến subviews

2

Làm theo cách này ..

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    txtNote = (LinedEditText) findViewById(R.id.txtNote); 
    lnr = (LinearLayout) findViewById(R.id.lnr); 
    LinearLayout l1 = new LinearLayout(this); 
    LinearLayout l2 = new LinearLayout(this); 
    LinearLayout l3 = new LinearLayout(this); 
    l1.setBackgroundResource(android.R.color.holo_green_light); 
    l2.setBackgroundResource(android.R.color.holo_orange_dark); 
    l3.setBackgroundResource(android.R.color.holo_blue_bright); 

    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT, 1); 
    lnr.addView(l1, param); 
    lnr.addView(l2, param); 
    lnr.addView(l3, param); 

} 
2

Bạn có thể làm điều đó bằng cách thiết lập thuộc tính trọng lượng bố trí cho bố trí tuyến tính cá nhân của bạn, vượt qua nó trong LinearLayout - LayoutParams constructor:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParam(
         LayoutParams.MATCH_PARENT, 
         LayoutParams.MATCH_PARENT, 1); 

hoặc

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
         0, 
         LayoutParams.MATCH_PARENT, 1); 

Hy vọng nó có thể giúp bạn!

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