检测滚动视图到达顶部 - Android

Posted

技术标签:

【中文标题】检测滚动视图到达顶部 - Android【英文标题】:Detect scroll view reaching its top - Android 【发布时间】:2015-07-29 12:32:06 【问题描述】:

我使用 activity_main.xml 在我的 android 应用程序中使用了 scrollview。卷轴工作完美。 但问题是我需要添加一个滚动到顶部按钮,这样如果用户开始滚动按钮应该像下面的链接一样可见..

http://webdesignerwall.com/demo/scroll-to-top/scrolltotop.html?

我需要在 Android 中执行此操作..

【问题讨论】:

你在scrollView中使用的是listview还是gridview?? 不,我在这里没有使用任何视图.. 尝试 scroll_view.smoothScrollTo(0,0);在按钮点击 谢谢@kgandroid.. 但我只需要在页面滚动时查看按钮.. 你可以使用这样的东西,***.com/questions/10713312/…。 【参考方案1】:

使用以下代码检测滚动条的顶部。

final ViewTreeObserver.OnScrollChangedListener onScrollChangedListener = new
            ViewTreeObserver.OnScrollChangedListener() 

                @Override
                public void onScrollChanged() 
                    if (scrollview.getScrollY() == 0) 
                        swipeRefreshLayout.setEnabled(true);
                     else
                        swipeRefreshLayout.setEnabled(false);
                
            ;
    scrollview.setOnTouchListener(new View.OnTouchListener() 
        private ViewTreeObserver observer;

        @Override
        public boolean onTouch(View v, MotionEvent event) 
            if (observer == null) 
                observer = scrollview.getViewTreeObserver();
                observer.addOnScrollChangedListener(onScrollChangedListener);
             else if (!observer.isAlive()) 
                observer.removeOnScrollChangedListener(onScrollChangedListener);
                observer = scrollview.getViewTreeObserver();
                observer.addOnScrollChangedListener(onScrollChangedListener);
            
            return false;
        
    );

【讨论】:

请问?观察者什么时候不活着? 我认为你应该在 onTouch 方法中返回 true。顺便谢谢。【参考方案2】:
 scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() 
            @Override
            public void onScrollChanged() 
                if (scrollView != null) 
                    if (scrollView.getScrollY()==0) 
                        Toast.makeText(getContext(),"top",Toast.LENGTH_SHORT).show();
                     else 

                    
                
            
        );

【讨论】:

以上是关于检测滚动视图到达顶部 - Android的主要内容,如果未能解决你的问题,请参考以下文章

滚动视图内的Android约束布局高度无效

滚动视图顶部的静态按钮 android studio

折叠标题视图 - ScrollView 在到达底部时停止滚动

滚动位置在列表视图的顶部

检测滚动条何时到达div的顶部?

将一个视图滑过另一个视图