Comment savoir si une vue est visible à L'écran sur Android?
je veux vérifier si un View
dans un ScrollView
est actuellement visible sur Android. Je ne suis pas vérifier si il est axé sur encore, mais si elle est actuellement affichée sur l'écran. Est-il une méthode en View
qui peut me dire si la vue est actuellement visible?
5 réponses
int[] location = new int[2];
view.getLocationOnScreen(location);
ou
Rect rect = new Rect();
view.getGlobalVisibleRect(rect);
utilisez maintenant cet emplacement ou rectangle pour vérifier s'il est dans vos limites visibles ou non. S'il s'agit simplement de l'écran entier, cochez la case getResources().getDisplayMetrics()
.
comme L'a souligné Antek dans les commentaires ci-dessous, la vue peut encore être disparue ou invisible avec les valeurs retournées ici indiquant où elle a été dessinée pour la dernière fois. Ainsi, la combinaison de la condition liée aux limites ci-dessus avec un view.isShown()
ou view.getVisibility() == VISIBLE
devrait prendre soin de que.
ce code fonctionne pour moi:
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);
}
essayer
if(view.isShown()) {
// Visible
} else {
// Invisible
}
la méthode getVisibility()
vous aidera à vérifier la visibilité de tout View
.
exemple:
if(view.getVisibility() == View.VISIBLE) {
// Visible
} else {
// Invisible
}
la fonction voir La.getVisibility () peut avoir les valeurs suivantes:
-
.VISIBLE (0): la vue est visible.
-
View.INVISIBLE (1): la vue est invisible, mais elle occupe tout de même de l'espace à des fins de mise en page.
-
View.PASSÉ (2): la vue est allé. Complètement cachée, comme si la vue n'avait pas été ajoutée
Vous pouvez voir le lien ci-dessous pour plus d'informations. Comment puis-je vérifier si une vue est visible ou non sur Android?