当前位置: 首页 > 知识库问答 >
问题:

检查ScrollView是否已到达布局的顶部

周浩淼
2023-03-14

是否可以检查ScrollView是否一直滚动到顶部?

我想检查这一点,以便我可以启用滑动刷新布局,否则将其禁用。

使用ListView可以这样做,但是没有用于ScrollViews的setOnScrollListener

listView.setOnScrollListener(new OnScrollListener() {

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        boolean enable = false;
        if(listView != null && listView.getChildCount() > 0){
            // check if the first item of the list is visible
        boolean firstItemVisible = listView.getFirstVisiblePosition() == 0;
        // check if the top of the first item is visible
        boolean topOfFirstItemVisible = listView.getChildAt(0).getTop() == 0;
        // enabling or disabling the refresh layout
        enable = firstItemVisible && topOfFirstItemVisible;
    }
    swipeRefreshLayout.setEnabled(enable);
}
});

共有3个答案

欧阳俊逸
2023-03-14

在静态编程语言中:

scrollView.viewTreeObserver.addOnScrollChangedListener {
    if (!scrollView.canScrollVertically(1)) {
        // Bottom of scroll view.
    }
    if (!scrollView.canScrollVertically(-1)) {
        // Top of scroll view.
    }
}
邢曦
2023-03-14

您可以使用< code>getScrollY()方法(来自< code>View类)

范凡
2023-03-14

此链接可能对您有所帮助。它显示了如何为ScrollView设置滚动侦听器。然后,参考@antonio答案。

对于您的情况,它将是:

    mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            int scrollY = mScrollView.getScrollY(); //for verticalScrollView
            if (scrollY == 0) 
                swipeRefresh.setEnabled(true);
            else 
                swipeRefresh.setEnabled(false);
        }
    });
 类似资料:
  • 我正在为iPad开发HTML5网络应用程序,它使用谷歌地图API。这个API对我来说是新的,我已经搜索了许多与它相关的问题的答案。标记,信息窗口,路线,地理定位,街景。关于这一切的最有用的信息可以在官方文件中找到: https://developers.google.com/maps/documentation/javascript/3.exp/reference?hl=ru 此代码在Naviga

  • 问题内容: 我正在创建一个分页系统(类似于Facebook),当用户滚动到底部时会加载内容。我想最好的方法是找到用户何时位于页面底部,并运行ajax查询以加载更多帖子。 唯一的问题是我不知道如何使用jQuery检查用户是否已滚动到页面底部。有任何想法吗? 我需要找到一种方法来检查用户何时使用jQuery滚动到页面底部。 问题答案: 在上使用事件,如下所示: 您可以在此处进行测试,这将使窗口顶部滚动

  • 我正在从Wordpress字段中获取日期,我需要检查这些日期是否已经过去或即将到来。 foreach呼应了这一点。 看起来只是检查第一天的约会。

  • 我们有大约200,00行的大型代码库,其中Spring2.X被用作基本的应用程序开发框架。我们正在考虑对Spring4.X进行一次重大(也是痛苦的)升级,原因很简单,Spring2.X似乎不再有任何商业支持。 我还注意到,Spring Framework的最新版本2.5.6在过去5年中没有任何错误或安全修复?这是否意味着Spring2.X是一个孤立的项目? http://sourceforge.n

  • 在二叉树的morris遍历中,它使用每个右叶节点建立指向当前节点的连接。 假设我们以预先排序的方式遍历树,当到达叶节点时,我们如何判断是否遇到叶节点? 我们不能使用下面的行来检查:if(null==node.left 因为这里node.right指向当前节点,因为莫里斯算法。 一个好方法是,我们总是使用TreeNode对象中的一个字段将访问的节点标记为已访问,但是如果我们没有这个字段,在许多情况下

  • 问题内容: 检查是否已提交表单以确定是否应将表单变量传递给验证类的最佳方法是什么? 首先我想也许是: 但这将永远返回true,因为在任何地方都定义了超全局变量。我不想用以下方法遍历表单的每个元素: 在写这个问题时,我想到了一个更基本的解决方案,同时添加一个隐藏字段作为我可以检查的标志。 有没有比添加自己的标志更“干净”的方法? 问题答案: 对于一般检查是否有动作使用: 编辑 :如评论中所述,此方法