我只是想检测滚动嵌套的位置scrollview android在底部,和调用函数.我的代码是:
scroll.getViewTreeObserver()
.addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int totalHeight = scroll.getChildAt(0).getHeight();
int scrollY = scroll.getScrollY();
Log.v("position", "totalHeight=" + totalHeight + "scrollY=" + scrollY);
if (scrollY==totalHeight) {
getPlaylistFromServer("more");
}
}
});
但是总高度和最大滚动不一样。怎么解决?
9条答案
按热度按时间avwztpqn1#
在
NestedScrollView
参数中设置setOnScrollChangeListener
以获取要检测偏移量是否在底部,需要获取内容高度
v.getChildAt(0).getMeasuredHeight()
的值,并比较当前滚动过父高度,如果有相同的值,则说明已经到了末尾。可以使用
v.getMeasuredHeight()
获得父视图的高度lf5gs5x22#
我知道很晚了,但是......试试这边。
快乐编码..
mkh04yzy3#
Webserveis回答正确,但需要在onScrollChange(override方法)中做一点修改,如下所示:
Kotlin:
0pizxfdo4#
它对我起作用了Source
kx7yvsdv5#
这对我很有效:
基本上,我们在nestedScrollView中添加许多视图,但以Single View的形式将它们 Package 在一起。因此,childCount将始终为1,其索引为0。因此,使用
v.getChildAt(0).getBottom()
来确定其底部。现在,nestedScroll.getHeight()
返回像素高度,scrollY
将返回当前垂直原点。因此,每当到达NestedScrollView的底部时,上述条件将为真。这只工作了一段时间...因此,不要以这种方式使用它。
amrnrhlw6#
对于API〈23,您可以添加一个treeObserver。scrollChangeLister存储一个本地浮点变量,并检查您滚动方向,如下所示
范例
m3eecexj7#
Webserveis回答正确,但条件应该是这样的
hrysbysz8#
这对我很有效!
yr9zkbsy9#
我只是修改了一点第一个答案的代码,以检测嵌套滚动视图中的循环视图的结尾。