Android 如何知道我们已将ScrollView滚动到顶部
我有一些片段,NestedScrollView是其中的根布局。我想要的是在这个片段的中间滚动,然后按下一些动作按钮,它必须触发自动滚动到片段顶部并调用一些动作,但只有在片段(NestedScrolView)丰富的顶部之后(用于平滑动画) 我写这个函数:Android 如何知道我们已将ScrollView滚动到顶部,android,kotlin,Android,Kotlin,我有一些片段,NestedScrollView是其中的根布局。我想要的是在这个片段的中间滚动,然后按下一些动作按钮,它必须触发自动滚动到片段顶部并调用一些动作,但只有在片段(NestedScrolView)丰富的顶部之后(用于平滑动画) 我写这个函数: fun NestedScrollView.scrollTop(callback: () -> Unit) { setOnScrollChangeListener { _: NestedScrollView?, _: Int, sc
fun NestedScrollView.scrollTop(callback: () -> Unit) {
setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, _: Int ->
if (scrollY == 0) {
callback.invoke()
}
}
fullScroll(View.FOCUS_UP)
}
但当碎片已经在顶部时,如果我按下ACTION_按钮,它就不起作用了
而且,在调用回调之前,我会眨一下眼睛
那么,在我的例子中,处理点击操作按钮的最佳方式是什么?是否有用于NestedScrollView的回调函数,在到达顶部后调用,以及如何处理我已经在屏幕顶部的情况(OnScrollChangeListener不调用)
scrollView.viewTreeObserver.addOnScrollChangedListener {
if (!scrollView.canScrollVertically(1)) {
// Bottom of scroll view.
}
if (!scrollView.canScrollVertically(-1)) {
// Top of scroll view.
}
}