2010-08-30 8 views
21

Estoy intentando ajustar dinámicamente la altura de mis filas según la (altura de la pantalla - mi altura de diseño)/list.size.La altura de LinearLayout en onCreate es 0

Desafortunadamente en el método onCreate el alto de diseño devuelve nulo (no así cuando lo llamo en un oyente de clic).

¿Hay otro método para llamarlo?

Respuesta

52

Tienes que esperar hasta que se realice la distribución, que está después de onCreate(). Puede hacerlo escuchando onSizeChanged() en una Vista o publicando Runnable en onCreate() (myView.post(new Runnable() { ... })).

+0

Parece que no hay escucha para onSizeChanged en Android 1.6? (Incluso intenté con la nueva Vista(). SetOnSize ... Y findViewById (R.layout.main) devuelve nulo ... Parece que soy un idiota pero todavía no entiendo muy bien Android. .. – Chr0n

+0

lo puse en el botón para el que el tamaño estoy esperando por su parte .. this.btNext.post (nueva Ejecutable() { \t \t \t public void run() { \t \t \t \t // Inicializar tableLayout con contactos \t \t \t \t initTableLayout(); \t \t \t} \t \t}); Gracias por la información. – Chr0n

+10

¿Por qué la publicación de un 'Runnable' en la garantía' View' garantiza que el código dentro del 'Runnable' se ejecutará después de que haya ocurrido el diseño? ¿Es una característica de diseño de 'View' que los mensajes se procesan fuera de' Handler' una vez que se ha realizado el diseño? – Trevor

Cuestiones relacionadas