studio programacion para móviles libros libro edición desarrollo curso aplicaciones android android-view android-scrollview visible

para - manual de programacion android pdf



¿Cómo puedes saber si una vista está visible en la pantalla en Android? (5)

El método getVisibility() te ayudará a verificar la visibilidad de cualquier View .

Ejemplo:

if(view.getVisibility() == View.VISIBLE) { // Visible } else { // Invisible }

Quiero verificar si una View dentro de un ScrollView está actualmente visible en Android. No estoy comprobando si está enfocado todavía, pero si se está mostrando en la pantalla. ¿Hay un método en View que pueda indicarme si la vista está actualmente visible?


Este código funciona para mí:

public static boolean isVisible(final View view) { if (view == null) { return false; } if (!view.isShown()) { return false; } final Rect actualPosition = new Rect(); view.getGlobalVisibleRect(actualPosition); final Rect screen = new Rect(0, 0, getScreenWidth(), getScreenHeight()); return actualPosition.intersect(screen); }


La función View.getVisibility () puede tener los siguientes valores:

  • Vista.VISIBLE (0): la vista es visible.

  • Vista.INVISIBLE (1): La vista es invisible, pero aún ocupa espacio para propósitos de diseño.

  • View.GONE (2): la vista se ha ido. Completamente oculto, como si la vista no hubiera sido añadida.

Puedes ver el siguiente enlace para más información. ¿Cómo puedo comprobar si una vista es visible o no en Android?


tratar

if(view.isShown()) { // Visible } else { // Invisible }


int[] location = new int[2]; view.getLocationOnScreen(location);

o

Rect rect = new Rect(); view.getGlobalVisibleRect(rect);

Ahora use esta ubicación o rectángulo para verificar si está dentro de sus límites visibles o no. Si es simplemente la pantalla completa, verifique con getResources().getDisplayMetrics() .

Como lo señaló Antek en los comentarios a continuación, la vista puede estar desaparecida o ser invisible con los valores devueltos aquí indicando dónde se dibujó por última vez. Entonces, la combinación de la condición relacionada con los límites anteriores con view.isShown() o view.getVisibility() == VISIBLE debería hacerse cargo de eso.