2013-10-03 27 views
24

Chcę dodać trzy liniowe układy do aktywności programowo o tej samej szerokości. Problem polega na tym, że nie jestem w stanie programowo ustawiać wag tych układów. Mogłem to zrobić w xml, ale chcę to zrobić w programie. tutaj jest to, co chcę: enter image description hereAndroid Linear Layout Weight Programowo

Odpowiedz

38

Oto jego rozwiązanie

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

zobacz pełne rozwiązanie

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

Pracowałem jak amulet, dzięki za szybką reakcję. Jednak musiałem zmodyfikować go trochę jak to >> LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (0, LayoutParams.WRAP_CONTENT); \t \t \t \t lp.weight = 1; – Bhaijaan

5

Zastosowanie new LinearLayout.LayoutParams(int width, int height, float weight) ustawić ciężary podczas ustawiania params układu do subviews

2

Zrób to w ten sposób ..

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

Można to zrobić poprzez ustawienie właściwości układu masy dla poszczególnych układów liniowych, przekazać ją w LinearLayout - LayoutParams konstruktora:

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

lub

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

Nadzieja może pomóc!