NestedScrollView的滚动监听,滚动到指定位置

滚动监听

  1. 滚动到底部

    // 滚动到底
    if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
    Log.i(TAG, "BOTTOM SCROLL");
    }

  2. 滚动到顶

    if (scrollY == 0) {// 滚动到顶
    Log.i(TAG, "TOP SCROLL");
    }

完整代码如下:

svscrollouter.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
            @Override
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {

                //Log.e(TAG, "onScrollChange: " + scrollX +"---" + scrollY + "----" +oldScrollX + "---" + oldScrollY );
                //监听滚动状态

                if (scrollY > oldScrollY) {//向下滚动
                    Log.i(TAG, "Scroll DOWN");
                }
                if (scrollY < oldScrollY) {//向上滚动
                    Log.i(TAG, "Scroll UP");
                }

                if (scrollY == 0) {// 滚动到顶
                    Log.i(TAG, "TOP SCROLL");
                }
                // 滚动到底
                if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
                    Log.i(TAG, "BOTTOM SCROLL");
                }

                //判断某个控件是否可见
                Rect scrollBounds = new Rect();
                svscrollouter.getHitRect(scrollBounds);
                if (tvscrollthree.getLocalVisibleRect(scrollBounds)) {//可见
                    Log.e(TAG, "onScrollChange:  第3个可见" );
                }else {//完全不可见
                    Log.e(TAG, "onScrollChange:  第3个不可见" );
                }



//                Log.e(TAG, "onScrollChange: ------------" + scrollY +"------"+ tvscrollthree.getTop() );
//                //判断某个控件是否滚到顶部
//                if (scrollY == tvscrollthree.getTop()){
//                    Log.i(TAG, "onScrollChange: ------top-------" );
//                }
//
//                Log.e(TAG, "onScrollChange: bottmo" + scrollY +"-----"+ (tvscrollthree.getTop() + tvscrollthree.getHeight()) );


            }
        });

滚动控制

    1. 滚动到底部
 svscrollouter.fullScroll(NestedScrollView.FOCUS_DOWN);
    1. 滚动到顶部
 svscrollouter.fullScroll(NestedScrollView.FOCUS_UP);
    1. 滚动到摸个控件的顶部或底部
 //顶部
 svscrollouter.scrollTo(0,tvscrollfour.getTop());
 //底部
svscrollouter.scrollTo(0,tvscrollthree.getBottom());

判断某个子控件是否显示

    //判断某个控件是否可见
                Rect scrollBounds = new Rect();
                svscrollouter.getHitRect(scrollBounds);
                if (tvscrollthree.getLocalVisibleRect(scrollBounds)) {//可见
                    Log.e(TAG, "onScrollChange:  第3个可见" );
                }else {//完全不可见
                    Log.e(TAG, "onScrollChange:  第3个不可见" );
                }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二话不说,先上个效果图 demo已传到了GitHub : https://github.com/MrWangCh...
    RushKing阅读 1,149评论 4 13
  • Vue-Music 一| 前期工作 1.项目初始化 npm install -g vue-cli vue init...
    noobakong阅读 1,874评论 0 5
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,803评论 1 45
  • “问君能有几多愁,恰似一江春水向东流。”第一次知道李煜,便是通过这首《虞美人》,于是,一位“忧愁似春水”的词人形象...
    颜凝雪阅读 713评论 1 3
  • 早上与妈妈聊到奉侍奶奶时的一些小问题,自认为妈妈已是所见过最好的媳妇,勤恳、温柔、恭敬,却还是有不够谨言的时候,惹...
    素面相见阅读 188评论 0 0