2013-10-03 14 views
24

Desidero aggiungere tre layout lineari a un'attività in modo programmatico ciascuno della stessa larghezza. il problema è che non sono in grado di impostare i pesi di questi layout a livello di codice. Potrei farlo in xml, ma voglio farlo in programma. qui è quello che voglio: enter image description herePeso layout lineare Android a livello di programmazione

risposta

38

Ecco la sua soluzione

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

See Soluzione completa

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

Ha funzionato come un fascino, grazie per la risposta rapida. Tuttavia ho dovuto modificarlo un po 'come questo >> LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (0, LayoutParams.WRAP_CONTENT); \t \t \t \t lp.weight = 1; – Bhaijaan

5

Usa new LinearLayout.LayoutParams(int width, int height, float weight) per impostare i pesi durante l'impostazione params layout per le subviews

2

In questo modo ..

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

Puoi farlo impostando la proprietà peso layout per i vostri singoli layout lineare, passarlo in LinearLayout - LayoutParams costruttore:

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

o

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

Spero che può aiutare!

Problemi correlati