如何判断一个视图在Android的屏幕上是否可见?

我想检查一个ScrollView View内的View目前在Android中可见。 我不检查它是否关注,但如果它正在屏幕上显示。 View中是否有方法可以告诉我视图是否可见?

Solutions Collecting From Web of "如何判断一个视图在Android的屏幕上是否可见?"

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

要么

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

现在使用这个位置或矩形来检查它是否在你的可见范围内。 如果它只是整个屏幕,请检查getResources().getDisplayMetrics()

正如Antek在下面的评论中所指出的那样,这个视图可能仍然会消失或者看不见,这个返回的值告诉我们上一次绘制的位置。 因此,将上面的边界相关的条件与view.isShown()view.getVisibility() == VISIBLE应该是很重要的。

尝试

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

getVisibility()方法将帮助您检查任何View的可见性。

例:

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

View.getVisibility()函数可以具有以下值:

  • View.VISIBLE(0):视图是可见的。

  • View.INVISIBLE(1):视图是不可见的,但仍然占用空间用于布局。

  • View.GONE(2):视图消失了。 完全隐藏,好像没有添加视图

你可以看到下面的链接了解更多信息。 我怎样才能检查一个视图是否可见或不在Android?