2010-10-30 8 views
2

J'écris une application de gestionnaire de tâches qui télécharge une liste de tâches et de sous-tâches à partir d'un serveur et crée une nouvelle case à cocher pour chaque élément et l'ajoute à une disposition linéaire. . Le problème que je rencontre est que je ne peux pas définir la «marge de mise en page à gauche» en utilisant java comme je peux avec XML (c'est pour les sous-tâches de les indenter un peu sur l'écran). Je peux définir la plupart des autres propriétés xml, mais cb.setMargins() ne fonctionne pas (indique undefined pour le type case à cocher). Le réglage du rembourrage n'atteint pas le résultat souhaité.Définir un layoutmangin sur une case à cocher créée dynamiquement

for(int i=0;i<tasks.size();i++) { 
CheckBox cb = new CheckBox(this); 
cb.setText(tasks.get(i).subtask_desc); 
cb.setButtonDrawable(R.drawable.checkbox_xml); 
ll.addView(cb); 
    } 

Des idées ou comment je travaillerais à travers cela?

Répondre

6

Je pense que vous devez ajouter la case à l'aide des LinearLayout LayoutParams correctes:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.leftMargin = 123; 
li.addView(cb, params); 

Hope qui aide!

+1

J'ai vu que le code 100 fois juste jamais réalisé comment l'utiliser correctement. J'ai toujours pensé que cela créait une nouvelle disposition linéaire. Cela a fonctionné parfaitement et a été très utile, merci. – Satchmo

1

Salut Essayez ceci ...

private LinearLayyout ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    params.leftMargin = 123;; 
    CheckBox cb; 
    for(int i = 0; i < 10; i++) { 
     cb = new CheckBox(this); 
     cb.setText(categoryListArray[i]); 
     ll.addView(cb, ll); 
    } 
+0

Comment cela ajoute-t-il une marge sur une case à cocher créée dynamiquement? – Oleksiy

Questions connexes