Ho bisogno di preparare alcuni oggetti in base al layout iniziale di widget e viste nella mia attività. Mi piacerebbe farlo nelle fasi di inizializzazione, idealmente onCreate e onStart. Considerando la possibilità di modifiche che si verificano quando non siamo in primo piano, potrebbe essere necessario che alcune di esse si verifichino in onResume.Quando Android esegue prima il layout?
Quindi ho controllato se potevo misurare come erano state disposte le mie opinioni.
Log.d("MyApp", "w,h of X is " + findViewById(R.id.X).getWidth() +
"," + findViewById(R.id.X).getHeight());
mi sono imbattuto in questo onCreate, onStart e onResume. Ogni volta ottengo 0,0 per larghezza, altezza. Se aspetto onTouchEvent, ottengo le informazioni sul layout, quindi il layout è fatto per allora.
Sono sorpreso del fatto che il layout non è impostato e definitivo per il momento in cui sto vedendo su Riduci. Mi aspettavo che i widget fossero già pronti e pronti per giocherellare.
ho fatto una traccia dello stack sul metodo onSizeChanged e lo fa venire dalla ciclo di invio messaggi. – Brian
Non sembra essere un modo per impostare un gestore "onSizeChanged" senza sottoclassi, il che è sfortunato, perché alcuni layout non hanno costruttori. Finisci per dover lavorare molto per qualcosa che dovrebbe essere banale. –
@dpk è possibile utilizzare ViewTreeObserver per impostare numerosi richiami relativi al disegno e al layout ed evitare così la sottoclasse della vista. –