Uzyskaj widok root z bieżącej aktywności

Wiem, jak uzyskać widok root za pomocą widoku .getRootView () . Jestem również w stanie uzyskać Widok Z zdarzenia onClick przycisku, gdzie argumentem jest widok. Ale jak Mogę uzyskać widok w aktywności ?

Author: manfcas, 2010-12-20

8 answers

Jeśli potrzebujesz głównego widoku swojej aktywności (aby móc dodać tam swoją zawartość) użyj

findViewById(android.R.id.content)

Odnotowano również, że na niektórych urządzeniach trzeba używać

getWindow().getDecorView().findViewById(android.R.id.content)
Zamiast tego.

Należy pamiętać, że jak donosił Booger, może to być za paskiem nawigacyjnym (z przyciskiem wstecz itp.)na niektórych urządzeniach (ale wydaje się, że na większości urządzeń tak nie jest).

Jeśli chcesz uzyskać widok, który dodałeś do swojej aktywności za pomocą metody setContentView() to tak jak napisał pottedmeat możesz użycie

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Ale lepiej po prostu ustawić id do tego widoku w układzie xml i użyć tego id zamiast.

 894
Author: Dmitry Ryadnenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 09:56:34

To jest to, czego używam, aby uzyskać widok główny znaleziony w pliku XML przypisanym do setContentView:

final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);
 244
Author: pottedmeat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-21 06:35:27

Testowałem to w Androidzie 4.0.3, tylko:

getWindow().getDecorView().getRootView()

Pokaż ten sam widok co otrzymujemy z

anyview.getRootView();

com.android.internal.policy.impl.PhoneWindow$DecorView@#########

I

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

Dawanie dziecka z jego

android.widget.FrameLayout@#######
Proszę potwierdzić.
 113
Author: Sudar Nimalan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-19 03:38:19

Get root view from current activity.

Wewnątrz naszej aktywności możemy uzyskać root widok z:

ViewGroup rootView = (ViewGroup) ((ViewGroup) this
            .findViewById(android.R.id.content)).getChildAt(0);

Lub

View rootView = getWindow().getDecorView().getRootView();
 18
Author: Jorgesys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 18:07:15

Po prostu okryj kogoś łatwiejszym sposobem:

Poniższy kod daje widok całego działania:

View v1 = getWindow().getDecorView().getRootView();

Aby uzyskać widok certian w aktywności,na przykład widok imageView wewnątrz aktywności, po prostu dodaj id tego widoku, który chcesz uzyskać:

View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);

Hope this helps somebody

 14
Author: Salah Klein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-26 00:04:48

anyview.getRootView(); to będzie najprostszy sposób.

 1
Author: Khemraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-14 04:08:45

Aby zobaczyć bieżącą aktywność

W każdym onclicku otrzymamy "View view", używając 'view' get the rootView.

View view = view.getRootView ();

I aby uzyskać Widok we fragmencie

View view = FragmentClass.getView ();

 0
Author: user3509903,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-12 07:43:32

Jeśli jesteś w aktywności, Załóżmy, że istnieje tylko jeden widok główny, możesz go uzyskać w ten sposób.

ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
        .findViewById(android.R.id.content)).getChildAt(0);

Możesz następnie wrzucić go do swojej prawdziwej klasy

Lub możesz użyć

getWindow().getDecorView();

Zauważ, że będzie to Widok actionbar, twój Widok znajduje się poniżej widoku actionbar

 -1
Author: bowman han,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-16 06:34:18