我从ScrollView扩展了简单的类,我希望在滚动完成时调用监听器,在顶部和底部调用接口监听器滚动完成时我的代码,但我只想在底部调用时调用
@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY) {
super.onScrollChanged(x, y, oldX, oldY);
for (OnScrollChangedListener oscl : onScrollChangedListeners) {
oscl.onVerticalScrollChanged(y);
}
if (mScrollStoppedListener != null && y != oldY) {
checkIfStopped();
}
}
如何在此方法中检测底部的滚动?我的wroted if
不正确,无法正确向下滚动
答案 0 :(得分:0)
通过此代码解决了我的问题。
View view = (View) getChildAt(getChildCount()-1);
int diff = (view.getBottom()-(getHeight()+getScrollY()+view.getTop()));
if( diff == 0 ){
Log.i("ScrollView: ", " Finished on bottom of screen");
}
答案 1 :(得分:0)
这可以通过这种方式完成...... 首先,您抓住ScrollView中的最后一个孩子:
CREATE TABLE dbo.aTable (ID_User INTEGER NOT NULL PRIMARY KEY IDENTITY(1,1), Name VARCHAR(30)) END
然后检查该视图在ScrollView中是否完全可见:
View lastChild = (View) scrollView.getChildAt(scrollView.getChildCount() - 1);
因此,如果boolean isFullyScrolled = lastChild.getBottom() <= scrollView.getHeight() + scrollView.getScrollY();
为isFullyScrolled
,您可以通知您的听众。