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?

28
demandé sur Vasily Kabunov 2012-12-26 14:43:08

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.

13
répondu AA_PV 2017-07-18 15:44:38

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);
}
13
répondu zegee29 2018-02-28 20:35:15

essayer

if(view.isShown()) {
    // Visible
} else { 
    // Invisible
}
0
répondu Rohit Suthar 2016-06-03 07:55:46

la méthode getVisibility() vous aidera à vérifier la visibilité de tout View .

exemple:

if(view.getVisibility() == View.VISIBLE) {
    // Visible
} else { 
    // Invisible
}
-10
répondu Jaydev Bharadwaj 2015-05-02 18:38:04

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?

-14
répondu secretlm 2017-05-23 12:34:29