web-dev-qa-db-fra.com

Android Pondération de mise en page linéaire par programme

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

25

Voici sa solution

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

Voir la 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);
44
Tofeeq Ahmad

Utilisez new LinearLayout.LayoutParams(int width, int height, float weight) pour définir des poids lors de la définition des paramètres de mise en page pour les sous-vues

6
Ivo Beckers

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);

}
3
Brijesh Patel

Vous pouvez le faire en définissant la propriété de pondération de la disposition pour vos dispositions linéaires individuelles, passez-la dans le constructeur LinearLayout - 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);

J'espère que cela peut vous aider!

2
AndyN