2013-10-03 2 views
24

Je souhaite ajouter trois mises en page linéaires à une activité par programmation ayant chacune la même largeur. le problème est que je ne suis pas en mesure de définir les poids de ces mises en page par programme. Je pourrais faire ceci dans xml, mais je veux faire ceci dans le programme. voici ce que je veux: enter image description herePoids de mise en page linéaire Android par programmation

Répondre

38

Voici sa solution

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

Voir Solution complète

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

A travaillé comme charme, merci pour une réponse rapide. Cependant j'ai dû le modifier un peu comme ceci >> LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams (0, LayoutParams.WRAP_CONTENT); \t \t \t \t lp.weight = 1; – Bhaijaan

5

Utilisez new LinearLayout.LayoutParams(int width, int height, float weight) pour définir des poids lors de la mise disposition params aux sous-vues

2

Faites de cette façon ..

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

Vous pouvez le faire en définissant la propriété de poids de mise en page pour vos mises en page linéaires individuels, passer dans LinearLayout - constructeur de LayoutParams:

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

ou

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

L'espoir peut vous aider!

Questions connexes