Ho una domanda riguardante le attività Android. Un'attività ha il metodo addContentView(View)
mentre un ViewGroup ha un metodo (simile?) addView(View)
. Sfortunatamente il suo "dove" non documentato è stato inserito nella vista da addContentView
. È come un LinearLayout
semplicemente aggiungendo la vista in fondo? È più simile a FrameLayout
, che aggiunge le sue viste "onTop"? Dipende dallo ViewGroup
impostato da setContentView
? Se mi tuffo nelle sorgenti, vedo che addContentView
chiamerà il metodo Window
astratto addContentView
. Sfortunatamente non riesco a vedere quale classe stia implementando questo metodo. Quindi, qual è il comportamento delle attività addContentView
esattamente?Activity.addContentView (View) == ViewGroup.addContentView (Visualizza)?
risposta
Il layout di base di ogni attività è un FrameLayout
. Ciò significa che il layout che si imposta in genere tramite setContentView()
è un elemento secondario di questo layout. addContentView()
aggiunge solo un altro figlio, quindi si comporta come un FrameLayout
(che significa che aggiunge nuovi elementi dell'interfaccia utente sopra quelli esistenti).
È possibile controllare questo utilizzando uno strumento chiamato hierachyviewer
dalla cartella ANDROID_SDK\tools
. Qui ci sono due screenshots:
Questo è il layout prima di chiamare addContentView()
, la mia attività è costituito da quello predefinito FrameLayout, in possesso di un LinearLayout con un pulsante (il mio layout qui). Questo si riflette nella riga inferiore qui, gli altri elementi sopra sono il titolo/barra di stato.
Dopo aver aggiunto un TextView tramite addContentView()
sembra che questo. Puoi vedere che il FrameLayout di base ha un nuovo figlio.
- 1. ng-view non visualizza il modello
- 2. Google view: visualizza i dettagli delle foto per una regione
- 3. Materialized View vs View
- 4. Visualizza cercapersone come lista Visualizza riga articolo
- 5. Misplaced permanente View avvertimento per Clip View in NSTableView
- 6. Present modal View Controller dall'interno Popover View
- 7. Visualizza frammento da FragmentActivity
- 8. Oracle Create Visualizza problema
- 9. View in RecyclerView non corrisponde larghezza genitore
- 10. Laravel condizionale Visualizza per https
- 11. Laravel 5, Visualizza :: Condividi
- 12. Android Visualizza Aggiungi figlio
- 13. Backbone cambia modello di View
- 14. Laravel/Lumen: Visualizza :: condivisione() alternativa?
- 15. Visualizza mobile sopra tutti ViewControllers
- 16. Link rottura quando View Serialized
- 17. Visualizza un RecyclerView in Fragment
- 18. MVP (Model View Presenter) o MVC (Model View Controller)
- 19. Xcode 4.2 iOS SDK 5 Applicazione View View
- 20. Express.js Visualizza "globals"
- 21. Visualizza l'espansione in Oracle
- 22. Razor View Without Layout
- 23. view with hibernate
- 24. SQL View o Table
- 25. Backbone View Nesting
- 26. iPhone view move animation
- 27. DialogInterface vs View OnClickListeners
- 28. Notifiche Remote View Android
- 29. Transparent View over ImageView
- 30. Knockout nested view model
Wow. Apprezzo davvero la tua risposta, grazie. il tuo consiglio e lo strumento che hai suggerito mi farà risparmiare un sacco di ore! Sei il tipo di utente che rende Stackoverflow così eccezionale! –
Ottima risposta! Supporto! –
+1 per 'hierachyviewer' – RootCode