vida studio savedinstancestate from example context content ciclo activity android android-activity view

studio - savedinstancestate android



Obtener vista de raĆ­z de la actividad actual (9)

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


Obtener vista de raíz de la actividad actual.

Dentro de nuestra actividad podemos obtener la vista root con:

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

o

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


En Kotlin podemos hacerlo un poco más corto:

val rootView = window.decorView.rootView


En caso de que alguien necesite 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 de certificado en la actividad, por ejemplo una imageView dentro de la actividad, simplemente agregue el ID de la vista que desea obtener:

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

Espero que esto ayude a alguien


Esto es lo que uso para obtener la vista raíz que 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, solo:

getWindow().getDecorView().getRootView()

Damos la misma vista de lo que obtenemos de.

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

y

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

dando hijo de su

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

Por favor confirmar.


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

entonces puedes lanzarlo a tu clase real

o podrías usar

getWindow().getDecorView();

Note que esto incluirá la vista de la barra de acción, su vista está debajo de la vista de la barra de acción


Si necesita una vista de raíz de su actividad (para que pueda agregar sus contenidos allí) 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 de retroceso, etc.) en algunos dispositivos (pero parece que en la mayoría de los dispositivos no lo está).

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

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

Pero es mejor que simplemente establezca la ID en esta vista en su diseño xml y use esta ID en su lugar.


para obtener una vista de la actividad actual

en cualquier onClick obtendremos "View view", usando ''view'' para obtener el rootView.

Vista ver = ver.getRootView ();

y para obtener Ver en fragmento

Vista vista = FragmentClass.getView ();


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