Necesito preparar algunos objetos según el diseño inicial de widgets y vistas en mi Actividad. Me gustaría hacerlo en los pasos de inicialización, idealmente onCreate y onStart. Teniendo en cuenta la posibilidad de cambios que suceden cuando no estamos en primer plano, algunos de ellos podrían tener que pasar en ReResumen.¿Cuándo hace primero el diseño de Android?
Así que comprobé si podía medir cómo se habían distribuido mis vistas.
Log.d("MyApp", "w,h of X is " + findViewById(R.id.X).getWidth() +
"," + findViewById(R.id.X).getHeight());
Ejecuto esto en onCreate, onStart y onResume. Cada vez recibo 0,0 por ancho, alto. Si espero en TouchEvent, obtengo la información de diseño, por lo que el diseño ya está hecho.
Me sorprende que el diseño no esté configurado y sea definitivo para el momento en que estoy viendo en Reanudar. Esperaba que los widgets ya estuvieran listos y listos para jugar.
hice un seguimiento de pila en el método onSizeChanged y que viene de la ciclo de despacho de mensajes. – Brian
No parece haber una manera de establecer un controlador "onSizeChanged" sin crear subclases, lo cual es desafortunado, porque algunos diseños no tienen constructores. Terminas teniendo que trabajar mucho para algo que debería ser trivial. –
@dpk puede usar ViewTreeObserver para establecer un montón de devolución de llamada relacionada con el dibujo y el diseño y así evitar tener que subclasificar la vista. –