Mam pytanie dotyczące aktywności Androida. Aktywność ma metodę addContentView(View)
, podczas gdy grupa View ma (podobną?) Metodę. Niestety jego nieudokumentowane "gdzie" znajduje się Widok z addContentView
. Czy to jest jak LinearLayout
po prostu dodanie widoku do dołu? Czy jest bardziej podobny do FrameLayout
, który dodaje swoje widoki "onTop"? Czy to zależy od zestawu ViewGroup
ustawionego przez setContentView
? Jeśli zanurkuję w źródłach, widzę, że addContentView
wywoła abstrakcyjną metodę Window
addContentView
. Niestety nie widzę, która klasa implementuje tę metodę. Więc co dokładnie dzieje się z działaniami addContentView
?Activity.addContentView (View) == ViewGroup.addContentView (View)?
Odpowiedz
Podstawowy układ każdej aktywności to FrameLayout
. Oznacza to, że układ, który zwykle ustawiasz pod numerem setContentView()
, jest podrzędnym elementem tego układu. addContentView()
dodaje tylko inne dziecko, dlatego zachowuje się jak FrameLayout
(co oznacza, że dodaje nowe elementy interfejsu użytkownika powyżej istniejących).
Możesz to sprawdzić, używając narzędzia o nazwie hierachyviewer
z folderu ANDROID_SDK\tools
. Oto dwa screeny:
Jest to układ przed wywołaniem addContentView()
, moja działalność polega domyślnego FrameLayout, trzymając LinearLayout z przyciskiem (mój układ tutaj). Znajduje to odzwierciedlenie w dolnym wierszu, pozostałe elementy powyżej to tytuł/pasek stanu.
Po dodaniu TextView poprzez addContentView()
wygląda to tak. Widać, że podstawa FrameLayout ma nowe dziecko.
Wow. Naprawdę doceniam twoją odpowiedź, dzięki. Twoja wskazówka i sugerowane narzędzie zaoszczędzą mi wiele godzin! Jesteś typem użytkownika, który sprawia, że Stackoverflow jest taki świetny! –
Świetna odpowiedź! Wsparcie! –
+1 dla "hierachyviewer" – RootCode