2010-10-07 7 views
0

Je dois ajuster par programme les tailles des vues dans mon interface utilisateur. Dire que je veux régler la hauteur d'une vue de l'enfant à la hauteur de la vue parent moins 60, je ferais ceci:dimensionnement par programmation des vues

child.getLayoutParams().height = parent.getMeasuredHeight() - 60; 
child.requestLayout(); 

(évidemment, cela est plus simple que ce que je dois vraiment faire)

Cela fonctionne très bien quand il est fait en réponse à, disons, en cliquant sur un bouton ou autre chose .... la vue enfant ajustera sa taille comme demandé, et tout va bien.

Maintenant, je dois aussi faire le dimensionnement quand l'activité commence, et quand l'orientation change. De préférence sans rien voir sauter. J'ai essayé de l'ajouter à onStart() de l'activité, mais cela ne fonctionne pas, car la hauteur du parent est égale à zéro. J'ai aussi essayé d'utiliser getHeight() plutôt que getMeasuredHeight(), et j'ai eu le même comportement incorrect.

Où puis-je mettre ce code, ou que dois-je faire pour dimensionner par programme les vues?

Répondre

0

J'ai rencontré le même problème. La solution que j'ai trouvée sur le web utilise le child.post() pour retarder le traitement dans l'activité onCreate. Cela fonctionne pour ce que je fais, mais j'aimerais entendre une meilleure solution ...

child.post(new Runnable() 
    { 
     public void run() 
     { 
     //resize stuff 
     } 
    } 
); 
+0

Cool je peux le faire si nécessaire ... – rob

Questions connexes