I'd like to show/hide a view when the user over scroll the listview.
How can I detect the over-scroll? Is there any listener?
I've tried OnScrollListener
but it only notifies about onScrollStateChanged
and onScroll
You can override the method onOverScrolled, as it respond to the results of an over-scroll operation.
Just a little more complete answer :
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
View view = (View) getChildAt(getChildCount()-1);
int diff = (view.getBottom()-(getHeight()+getScrollY()));
if(diff==0) {
//overscroll on bottom
} else {
//overscroll on top
}
}
scrollY = non-Zero and clampedY = true --> OverScroll state occure While Scrolling bottom to top
scrollY = Zero and clampedY = true --> OverScroll state occure While Scrolling top to bottom
so
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
if(clampedY){
if(scrollY==0){
//over Scroll at top
}else {
//over Scroll at Bottom
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With