Android 我如何知道scrollview已经滚动到底部?
我有一个scrollview,我只想在事件已经滚动到底部时发生,但我找不到检查scrollview是否在底部的方法 我已经解决了相反的问题;仅当事件已滚动到顶部时才允许事件发生:Android 我如何知道scrollview已经滚动到底部?,android,scrollview,Android,Scrollview,我有一个scrollview,我只想在事件已经滚动到底部时发生,但我找不到检查scrollview是否在底部的方法 我已经解决了相反的问题;仅当事件已滚动到顶部时才允许事件发生: ScrollView sv = (ScrollView) findViewById(R.id.Scroll); if(sv.getScrollY() == 0) { //do something } else { //do nothing } 如果scr
ScrollView sv = (ScrollView) findViewById(R.id.Scroll);
if(sv.getScrollY() == 0) {
//do something
}
else {
//do nothing
}
如果scrollView.getHeight()==scrollView.getScrollY+screensize,那么它将被滚动到底部。我找到了一种使它工作的方法。我需要检查滚动视图中孩子的测量高度,在本例中为线性布局。我使用通过这样做,您可以获得宽度的最大滚动
int maxScroll = yourScrollView.getChildAt(0).getMeasuredWidth() - yourScrollView.getWidth();
将垂直滚动视图的getWidth()更改为getHeight()如下所示:
public class myScrollView extends ScrollView
{
public myScrollView(Context context)
{
super(context);
}
public myScrollView(Context context, AttributeSet attributeSet)
{
super(context,attributeSet);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
View view = (View)getChildAt(getChildCount()-1);
int d = view.getBottom();
d -= (getHeight()+getScrollY());
if(d==0)
{
//you are at the end of the list in scrollview
//do what you wanna do here
}
else
super.onScrollChanged(l,t,oldl,oldt);
}
}
您可以在xml布局中使用myScrollView,也可以在代码中实例化它。
提示:对于上面的代码,如果用户经常点击列表末尾10次,那么您的代码将运行10次。在某些情况下,例如,当您希望从远程服务器加载数据以更新列表时,这种行为是不受欢迎的(很可能)。尝试预测不希望出现的情况并避免它们
提示2:有时接近列表末尾可能是让脚本运行的正确时机。例如,用户正在阅读一个文章列表,并且快要结束了。然后在列表完成之前开始加载更多。要做到这一点,只需实现您的目标:
if(d<=SOME_THRESHOLD) {}
if(谢谢你,但是当卷轴在底部时getScrollY=349 getBottom=430 getMeasuredHeight=430 getHeight=430无论我滚动了多远,最后三个都是一样的。唯一不同的是getScrollY。你提到的这个屏幕大小是多少?我没有对它进行交互吗?在这种情况下应该是81,我想不出任何变化就是这样。因为ScrollView只能有一个子项,您可以确定其中有一个子项:if(ScrollView.getScrollY()+ScrollView.getHeight()>=ScrollView.getChildAt(0.getMeasuredHeight()){/*已滚动到底部*/}这是放在一个方法中的吗?这段代码是如何实现的?@Itzhudini我尽可能地将其泛化,以便您可以以任何方式使用它。
if(d<=SOME_THRESHOLD) {}