Muszę przygotować kilka obiektów w oparciu o początkowy układ widżetów i widoków w mojej Aktywności. Chciałbym to zrobić w krokach inicjowania, najlepiej w trybie Utwórz i uruchom. Biorąc pod uwagę możliwość zmian, które nastąpiły, gdy nie jesteśmy na pierwszym planie, niektóre z nich mogą się zdarzyć w trybie onResume.Kiedy robi się układ na Androida?
Sprawdziłem, czy mogę zmierzyć, w jaki sposób zostały przedstawione moje poglądy.
Log.d("MyApp", "w,h of X is " + findViewById(R.id.X).getWidth() +
"," + findViewById(R.id.X).getHeight());
Uruchomiłem to w sprawieCreate, onStart i onResume. Za każdym razem otrzymuję 0,0 dla szerokości, wysokości. Jeśli czekam na onTouchEvent, otrzymam informację o układzie, więc układ zostanie do tego czasu zakończony.
Jestem zaskoczony, że układ nie jest ustawiony i ostateczny do czasu, gdy widzę obiekt OnResume. Spodziewałem się, że widżety będą już gotowe i gotowe do tego, aby się z nimi bawić.
zrobiłem ślad stosu na metodzie onSizeChanged i nie pochodzi od pętla wysyłania wiadomości. – Brian
Wygląda na to, że nie ma sposobu na ustawienie obsługi "onSizeChanged" bez podklasy, co jest niefortunne, ponieważ niektóre układy nie mają konstruktorów. Koniec z koniecznością wykonania wiele pracy za coś, co powinno być trywialne. –
@dpk można użyć ViewTreeObserver, aby ustawić pakiet wywołań zwrotnych związanych z rysunkiem i układem, a tym samym uniknąć podklasy widoku. –