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

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

nestedscrollview.viewTreeObserver.addOnGlobalLayoutListener {

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



    /**
     * 判斷是否可以滾動 如果不可以滾動 返回false說明界面已經全部加載顯示出來了;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 判斷是否滑動到底部,來處理底部按鈕是否可點擊的狀態

        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
            }

        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章