2016-02-22 1 views
0

Je génère des ToggleButtons dynamiquement, mais je ne parviens pas à mettre une marge supérieure pour éviter que les boutons se joignent entre eux.Marge sur les ToggleButtons générés dynamiquement

Mon code est le suivant, ce que je fais mal?

private void generateToggleButton(){ 

    RelativeLayout.LayoutParams lvg = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, R.dimen.tv_et_standart_small); 
    lvg.height = R.dimen.tv_et_standart_small; 
    lvg.width = RelativeLayout.LayoutParams.MATCH_PARENT; 
    lvg.setMargins(0, R.dimen.dp8, 0 ,0); 


    for(int e = 0; e < new_exp_Especies.size(); e++){ 
     final int position = e; 
     ToggleButton tb = new ToggleButton(this); 

     tb.setBackgroundDrawable(getResources().getDrawable(R.drawable.customshape_orange_red)); 
     tb.setText(new_exp_Especies.get(position).EspecieDesc); 
     tb.setTextOff(new_exp_Especies.get(position).EspecieDesc); 
     tb.setTextOn(new_exp_Especies.get(position).EspecieDesc); 
     tb.setTextSize(12); 
     tb.setGravity(Gravity.CENTER); 
     tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        buttonView.setBackgroundDrawable(getResources().getDrawable(R.drawable.customshape_green)); 
        new_exp_Especies.get(position).setValue(1); 
       } else { 
        buttonView.setBackgroundDrawable(getResources().getDrawable(R.drawable.customshape_orange_red)); 
        new_exp_Especies.get(position).setValue(0); 
       } 
      } 
     }); 
     tb.setLayoutParams(lvg); 

     ll_tbt_especie.addView(tb); 
    } 

} 
+0

vous devez obtenir la valeur ... lire la doc: 'R.dimen.tv_et_standart_small',' R.dimen.dp8' n'est pas ce que vous pensez ... vous devez utiliser la méthode class right de la classe 'Resources' – Selvin

Répondre

0

Après beaucoup d'essais, enfin, je l'ai résolu le problème avec:

final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, getResources().getDimensionPixelOffset(R.dimen.tv_et_standart_small)); 
lparams.gravity = Gravity.CENTER; 
lparams.topMargin = getResources().getDimensionPixelOffset(R.dimen.dp8);