2010-08-30 5 views
21

J'essaie d'ajuster dynamiquement la hauteur de mes lignes en fonction de la (hauteur de l'écran - ma hauteur de mise en page)/list.size.La hauteur de LinearLayout dans onCreate est 0

Malheureusement, dans la méthode onCreate, la hauteur de mise en page renvoie null (ce qui n'est pas le cas lorsque je l'appelle dans un écouteur de clic).

Existe-t-il une autre méthode dans laquelle je peux l'appeler?

Répondre

52

Vous devez attendre la fin de la mise en page, soit onCreate(). Vous pouvez le faire en écoutant onSizeChanged() sur une vue ou en publiant un Runnable à partir de onCreate() (myView.post(new Runnable() { ... })).

+0

Il semble y avoir aucun écouteur pour onSizeChanged dans Android 1.6? (J'ai même essayé avec new View(). SetOnSize ... Et findViewById (R.layout.main) renvoie null ... On dirait que je suis un idiot, mais je ne comprends pas encore Android. .. – Chr0n

+0

je l'ai mis sur le bouton pour lequel la taille je suis en attente pendant ce temps .. this.btNext.post (nouveau Runnable() { \t \t \t public void run() { \t \t \t \t // Initialiser tableLayout avec les contacts \t \t \t \t initTableLayout(); \t \t \t} \t \t}); Merci pour l'info. – Chr0n

+10

Pourquoi publier un 'Runnable' à' View' garantit-il que le code dans 'Runnable' sera exécuté après la mise en page? Est-ce une fonctionnalité de 'View' que les messages sont traités à partir de' Handler' une fois la mise en page effectuée? – Trevor

Questions connexes