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

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

  • 什么时候需要在View上执行invalidate()?
  • 在API 11之前,Android对应View.getX()的等效工作?
  • 如何制作美丽时尚的应用程序如Timely
  • 如何根据设备宽度和字体大小测量TextView高度?
  • CoordinatorLayout中的ViewPager覆盖API> = 21的其他视图
  • Android的 - 试图调用虚拟方法“无效android.view.View.getBoundsOnScreen(android.graphics.Rect)”对空对象引用
  • 在onCreateViewHolder中获取View的位置
  • 不同的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?