直接上代碼:
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
}
}