2013-01-12 7 views
15

Czy istnieje dynamiczny sposób uzyskania układu głównego (który jest rodzicem dla wszystkich innych układów) w aktualnie ustawionym pliku XML na moją aktywność?Znajdź układ główny w działaniu

Co jestem po to zamiast dając mój układ korzeniowy wyraźnej tożsamości i znalezienie go poprzez findViewById, mam nadzieję dostać coś wzdłuż linii kodu

pseudo:

this.findTopLayout(); 

mając już nazywane setContentView(R.layout.foo);

Nie widzę niczego w specyfikacji, która mogłaby załatwić sprawę, czy ja po prostu tęsknię, czy nie ma sposobu, aby to zrobić?

+1

Czy tego właśnie szukasz? http://stackoverflow.com/questions/4486034/get-root-view-from-current-activity – DeeV

+0

wydaje się, że właśnie tego szukam ... powinieneś opublikować to jako odpowiedź, a ja " Dam ci zielony znacznik wyboru (i bardzo dziękuję) –

Odpowiedz

48

wypróbować ten sposób, aby uzyskać układ korzeniowy..

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

lub

getWindow() getDecorView() getRootView();

+0

załatwi sprawę! –

2

Należy pamiętać, że oprócz metody opisanej przez Grishu, można również użyć metody getParent na dowolny widzenia (w tym przyciski, imageviews, układy, etc), aby uzyskać macierzystego tego widzenia (rodzic wrócił może również mieć rodzica). W związku z tym alternatywną metodą byłoby pętla na getParent z określonego widoku, dopóki getParent nie zwróci wartości null. W tym momencie użytkownik znalazłby widok główny widoku treści.

+0

tak, to jest przydatne w innym kierunku, ale mam nadzieję (i komentarze wydają się dawać taką dokładną odpowiedź), aby uniknąć szczegółowej informacji o układzie i po prostu zejść do niego z góry. –

+0

Nie musisz nic wiedzieć o układzie ani widoku nawet podczas wywoływania getParent. –

+0

nie, ale musiałbym znać identyfikator dziecka, aby najpierw uzyskać IT, prawda? Czy może czegoś brakuje? –

Powiązane problemy