NestedScrollView的滾動監(jiān)聽,滾動到指定位置

滾動監(jiān)聽

  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 );
                //監(jiān)聽滾動狀態(tài)

                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");
                }

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



//                Log.e(TAG, "onScrollChange: ------------" + scrollY +"------"+ tvscrollthree.getTop() );
//                //判斷某個(gè)控件是否滾到頂部
//                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. 滾動到摸個(gè)控件的頂部或底部
 //頂部
 svscrollouter.scrollTo(0,tvscrollfour.getTop());
 //底部
svscrollouter.scrollTo(0,tvscrollthree.getBottom());

判斷某個(gè)子控件是否顯示

    //判斷某個(gè)控件是否可見
                Rect scrollBounds = new Rect();
                svscrollouter.getHitRect(scrollBounds);
                if (tvscrollthree.getLocalVisibleRect(scrollBounds)) {//可見
                    Log.e(TAG, "onScrollChange:  第3個(gè)可見" );
                }else {//完全不可見
                    Log.e(TAG, "onScrollChange:  第3個(gè)不可見" );
                }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 二話不說,先上個(gè)效果圖 demo已傳到了GitHub : https://github.com/MrWangCh...
    RushKing閱讀 1,165評論 4 13
  • Vue-Music 一| 前期工作 1.項(xiàng)目初始化 npm install -g vue-cli vue init...
    noobakong閱讀 1,959評論 0 5
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評論 1 45
  • “問君能有幾多愁,恰似一江春水向東流?!钡谝淮沃览铎?,便是通過這首《虞美人》,于是,一位“憂愁似春水”的詞人形象...
    顏凝雪閱讀 810評論 1 3
  • 早上與媽媽聊到奉侍奶奶時(shí)的一些小問題,自認(rèn)為媽媽已是所見過最好的媳婦,勤懇、溫柔、恭敬,卻還是有不夠謹(jǐn)言的時(shí)候,惹...
    素面相見閱讀 211評論 0 0

友情鏈接更多精彩內(nèi)容