Android NestedScrollView剛開始加載完界面,判斷內(nèi)容是否全部展示以及判斷是否滑動到底部

直接上代碼:
1 剛開始加載完界面,判斷內(nèi)容是否全部展示,.viewTreeObserver.addOnGlobalLayoutListener是為了保證控件view加載完成

nestedscrollview.viewTreeObserver.addOnGlobalLayoutListener {

            if(!canScroll()){
                mNext?.alpha = 1f
                mNext?.isEnabled = true
            }
        }



    /**
     * 判斷是否可以滾動 如果不可以滾動 返回false說明界面已經(jīng)全部加載顯示出來了;true則表示需要滑動 才顯示全
     */
    fun canScroll(): Boolean {
//        val sv: ScrollView = findViewById(android.R.id.dtv_source_info_more_sv) as ScrollView
        val child: View = nestedscrollview.getChildAt(0)
        if (child != null) {
            val childHeight = child.measuredHeight
            return nestedscrollview.getHeight() < childHeight
        }
        return false
    }

2 判斷是否滑動到底部,來處理底部按鈕是否可點擊的狀態(tài)

        nestedscrollview?.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
            Log.d("nestedscro scrollY->", scrollY?.toString())
            Log.d("nestedscro oldScrollY->", oldScrollY?.toString())

// 判斷頂部標題欄顯示還是隱藏
            if (scrollY >= 100) {
                rl_focus_on_tanka_no_title?.visibility = View.GONE
                rl_focus_on_tanka_title?.visibility = View.VISIBLE
                view_space_top?.visibility = View.VISIBLE
            } else {
                rl_focus_on_tanka_no_title?.visibility = View.VISIBLE
                rl_focus_on_tanka_title?.visibility = View.GONE
                view_space_top?.visibility = View.GONE
            }

            // 滾動到底
            if (scrollY == ((v as NestedScrollView).getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {

                mNext?.alpha = 1f
                mNext?.isEnabled = true
            }

        }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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