2013-01-12 14 views
15

Esiste un modo dinamico per ottenere il layout di root (quello che è il genitore di tutti gli altri layout) nell'XML attualmente impostato sulla mia attività?Trova il layout principale nell'attività

quello che sto cercando è piuttosto che dare il mio layout radice un id esplicito e trovandolo via findViewById, spero di ottenere qualcosa lungo le linee di codice

pseudo:

this.findTopLayout(); 

aver già chiamato setContentView(R.layout.foo);

Non vedo nulla nelle specifiche che faccia il trucco, mi manca o non c'è modo di farlo?

+1

È questo quello che stai cercando? http://stackoverflow.com/questions/4486034/get-root-view-from-current-activity – DeeV

+0

sembrerebbe che sia esattamente quello che sto cercando ... dovresti postarlo come risposta, e io Ti darò il segno di spunta verde (e grazie mille) –

risposta

48

Si tenta in questo modo per ottenere il layout root:..

getWindow() getDecorView() findViewById (android.R.id.content); ..

O

getWindow() getDecorView() getRootView();

+0

fa il trucco! –

2

Nota che a parte il metodo descritto da Grishu, è anche possibile utilizzare il metodo getParent su qualsiasi vista (questo include pulsanti, imageviews, layout, ecc) per ottenere il genitore di quella vista (il genitore è tornato potrebbe anche avere un genitore). Quindi, un metodo alternativo sarebbe il loop su getParent da una particolare vista fino a quando getParent restituisce null. A quel punto, avresti trovato la vista root della tua vista del contenuto.

+0

sì, è utile nella direzione opposta, ma spero (e i commenti sembrano dare la risposta esatta) per evitare di conoscere qualsiasi cosa sul layout in modo specifico e di aprirmi la strada verso l'alto. –

+0

non è necessario conoscere nulla sul layout o sulla vista anche quando si chiama getParent. –

+0

no, ma avrei bisogno di conoscere l'ID del bambino per ottenere IT prima, giusto? O mi sta sfuggendo qualcosa? –

Problemi correlati