Obtener la vista de raíz de la actividad actual

Sé cómo obtener la vista raíz con View.getRootView () . También puedo obtener la vista del evento onClick de un botón donde el argumento es una vista . Pero, ¿cómo puedo obtener la vista en una actividad ?

Si necesita una vista de la raíz de su actividad (para que pueda agregar su contenido allí) utilice

 findViewById(android.R.id.content) 

También se informó que en algunos dispositivos se debe utilizar

 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 botón de retroceso, etc.) en algunos dispositivos (pero parece que en la mayoría de los dispositivos no lo es).

Si necesitas obtener una vista que hayas agregado a tu actividad usando el método setContentView() , entonces como escribió pottedmeat puedes usar

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

Pero mejor solo establezca el identificador en esta vista en su diseño xml y utilice este id en su lugar.

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); 

He probado esto en android 4.0.3, sólo:

 getWindow().getDecorView().getRootView() 

Dar la misma opinión de lo que obtenemos de

 anyview.getRootView(); com.android.internal.policy.impl.PhoneWindow$DecorView@######### 

y

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

Dando a luz a su hijo

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

Por favor confirmar.

Sólo incase Alguien necesita una manera más fácil:

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

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

Para obtener una vista certian en la actividad, por ejemplo una imageView dentro de la actividad, simplemente añada el id de esa vista que desea obtener:

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

Espero que esto ayude a alguien

Dentro de nuestra actividad podemos obtener la vista de la root con:

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

o

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

Si está en una actividad, asuma que sólo hay una vista de raíz, puede obtenerla así.

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

Usted puede entonces lanzarlo a su clase real

O usted podría usar

 getWindow().getDecorView(); 

Observe que esto incluirá la vista de la barra de acciones, su vista está por debajo de la vista de la barra de acciones

  • Android View PerformClick () y callOnClick () diferencia
  • Android slide down animación
  • Cómo implementar un deslizamiento de una vista (como feed de noticias en la aplicación de Facebook)
  • Android ToggleButton
  • Sobreescribiendo el método onScroll del com.android.View en la codificación android?
  • Cómo detectar si la actividad principal de la vista se está destruyendo
  • ¿El índice es importante en addView ()?
  • ¿Qué el mensaje de logcat: "E / MoreInfoHPW_ViewGroup (2905): Vista de padre no es un TextView" significa?
  • ¿Examinar todas las sub-vistas de una vista de Android?
  • Androide. Buscar vista por etiqueta
  • Android ¿Cómo agregar la vista en el comienzo del diseño?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.