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.