小编典典

Android:如何检查 ScrollView 内的 View 是否可见?

all

我有一个ScrollView包含一系列Views. 我希望能够确定一个视图当前是否可见(如果它的任何部分当前由
显示ScrollView)。我希望下面的代码可以做到这一点,令人惊讶的是它没有:

Rect bounds = new Rect();
view.getDrawingRect(bounds);

Rect scrollBounds = new Rect(scroll.getScrollX(), scroll.getScrollY(), 
        scroll.getScrollX() + scroll.getWidth(), scroll.getScrollY() + scroll.getHeight());

if(Rect.intersects(scrollBounds, bounds))
{
    //is  visible
}

阅读 120

收藏
2022-07-17

共1个答案

小编典典

在您正在测试的视图上使用View#getHitRect而不是。View#getDrawingRect您可以使用View#getDrawingRecton
ScrollView 而不是显式计算。

代码来自View#getDrawingRect

 public void getDrawingRect(Rect outRect) {
        outRect.left = mScrollX;
        outRect.top = mScrollY;
        outRect.right = mScrollX + (mRight - mLeft);
        outRect.bottom = mScrollY + (mBottom - mTop);
 }

代码来自View#getHitRect

public void getHitRect(Rect outRect) {
        outRect.set(mLeft, mTop, mRight, mBottom);
}
2022-07-17