Pregunta Obtener vista de root de la actividad actual


Sé cómo obtener la vista de root con View.getRootView (). También puedo obtener la vista desde el botón onClick evento donde el argumento es un Ver. Pero ¿cómo puedo obtener el ver en una actividad?


528
2017-12-20 00:40


origen


Respuestas:


Si necesita ver la raíz de su actividad (para que pueda agregar sus contenidos) use

findViewById(android.R.id.content)

También se informó que en algunos dispositivos tienes que usar

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

en lugar.

Tenga en cuenta que, como informó Booger, esto puede estar detrás de la barra de navegación (con el botón Atrás, etc.) en algunos dispositivos (pero parece que en la mayoría de los dispositivos no lo es).

Si necesita obtener una vista que agregó a su actividad usando setContentView() método luego como pottedmeat escribió puede usar

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

Pero mejor solo configure id para esta vista en su diseño xml y en su lugar use esta identificación.


877
2017-12-20 08:58



Esto es lo que uso para obtener la vista raíz como se encuentra en el archivo XML asignado con setContentView:

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

239
2018-02-21 17:48



Probé esto en Android 4.0.3, solo:

getWindow().getDecorView().getRootView()

dar la misma vista de lo que obtenemos

anyview.getRootView();

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

y

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

dando hijos de su

android.widget.FrameLayout@#######

Por favor confirmar.


110
2017-07-19 03:38



Obtenga la vista raíz de la actividad actual.

Dentro de nuestra actividad podemos obtener root ver con:

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

o

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

16
2017-11-29 20:23



Solo en caso de que alguien necesite una forma más fácil:

El siguiente código proporciona una vista de toda la actividad:

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

Para obtener una vista de certificado en la actividad, por ejemplo, una vista de imagen dentro de la actividad, simplemente agregue el ID de esa vista que desea obtener:

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

Espero que esto ayude a alguien


14
2018-03-26 00:04



anyview.getRootView(); será la forma más fácil.


1
2018-05-13 18:49



si está en una actividad, suponga que solo hay una vista de raíz, puede obtenerla así.

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

puedes lanzarlo a tu clase real

o podrías usar

getWindow().getDecorView();

observe que esto incluirá la vista de la barra de acciones, su vista se encuentra debajo de la vista de la barra de acciones


0
2017-07-28 09:02