我有一个ScrollView
,其中包含一系列Views
。我希望能够确定 View 当前是否可见(如果ScrollView
当前显示了该 View 的任何部分)。我希望下面的代码可以做到这一点,令人惊讶的是它没有:
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
}
最佳答案
在要测试的 View 上使用View#getHitRect
而不是View#getDrawingRect
。您可以在View#getDrawingRect
上使用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);
}
关于android - Android:如何检查ScrollView内部的View是否可见?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4628800/