滾動(dòng)監(jiān)聽
-
滾動(dòng)到底部
// 滾動(dòng)到底
if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
Log.i(TAG, "BOTTOM SCROLL");
} -
滾動(dòng)到頂
if (scrollY == 0) {// 滾動(dòng)到頂
Log.i(TAG, "TOP SCROLL");
}
完整代碼如下:
svscrollouter.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
//Log.e(TAG, "onScrollChange: " + scrollX +"---" + scrollY + "----" +oldScrollX + "---" + oldScrollY );
//監(jiān)聽滾動(dòng)狀態(tài)
if (scrollY > oldScrollY) {//向下滾動(dòng)
Log.i(TAG, "Scroll DOWN");
}
if (scrollY < oldScrollY) {//向上滾動(dòng)
Log.i(TAG, "Scroll UP");
}
if (scrollY == 0) {// 滾動(dòng)到頂
Log.i(TAG, "TOP SCROLL");
}
// 滾動(dòng)到底
if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
Log.i(TAG, "BOTTOM SCROLL");
}
//判斷某個(gè)控件是否可見
Rect scrollBounds = new Rect();
svscrollouter.getHitRect(scrollBounds);
if (tvscrollthree.getLocalVisibleRect(scrollBounds)) {//可見
Log.e(TAG, "onScrollChange: 第3個(gè)可見" );
}else {//完全不可見
Log.e(TAG, "onScrollChange: 第3個(gè)不可見" );
}
// Log.e(TAG, "onScrollChange: ------------" + scrollY +"------"+ tvscrollthree.getTop() );
// //判斷某個(gè)控件是否滾到頂部
// if (scrollY == tvscrollthree.getTop()){
// Log.i(TAG, "onScrollChange: ------top-------" );
// }
//
// Log.e(TAG, "onScrollChange: bottmo" + scrollY +"-----"+ (tvscrollthree.getTop() + tvscrollthree.getHeight()) );
}
});
滾動(dòng)控制
- 滾動(dòng)到底部
svscrollouter.fullScroll(NestedScrollView.FOCUS_DOWN);
- 滾動(dòng)到頂部
svscrollouter.fullScroll(NestedScrollView.FOCUS_UP);
- 滾動(dòng)到摸個(gè)控件的頂部或底部
//頂部
svscrollouter.scrollTo(0,tvscrollfour.getTop());
//底部
svscrollouter.scrollTo(0,tvscrollthree.getBottom());
判斷某個(gè)子控件是否顯示
//判斷某個(gè)控件是否可見
Rect scrollBounds = new Rect();
svscrollouter.getHitRect(scrollBounds);
if (tvscrollthree.getLocalVisibleRect(scrollBounds)) {//可見
Log.e(TAG, "onScrollChange: 第3個(gè)可見" );
}else {//完全不可見
Log.e(TAG, "onScrollChange: 第3個(gè)不可見" );
}