我有很多视图的ScrollView,如何在滚动后知道特定视图是否到达屏幕顶部?
我试过这个
mScroll.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
Rect scrollBounds = new Rect();
mScroll.getHitRect(scrollBounds);
if (mView.getLocalVisibleRect(scrollBounds) ) {
// if layout even a single pixel, is within the visible area do something
//Do someThing
} else {
// if layout goes out or scrolled out of the visible area do something
// Do some thing
}
}
});
但是此代码会检测视图是否在屏幕之外而不是屏幕顶部
答案 0 :(得分:0)
使用View.getLocationOnScreen()
和/或getLocationInWindow()
与你需要的位置进行比较后。
答案 1 :(得分:0)
您可以创建一个自定义ScrollView的类。在这个类中,重写方法onScrollChanged(int l,int t,int oldl,int oldt);
这是我的垂直ScrollView代码。
private int rangeEndHeight = 20;
private boolean onEnd = false;
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
int length = (int) Math.floor(getContentHeight() * getScale());
if(getScrollY() >= length - getHeight() - rangeEndHeight) {
if (!onEnd) {
onEnd = true;
// callback here
}
}
else {
onEnd = false;
}
}