【问题标题】:Detect scroll view reaching its top - Android检测滚动视图到达顶部 - 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.. 但我只需要在页面滚动时查看按钮..
  • 你可以使用这样的东西,stackoverflow.com/questions/10713312/…

标签: android scroll


【解决方案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 {

                    }
                }
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多