【发布时间】:2021-05-15 13:31:38
【问题描述】:
我有一个NestedScrollView,我正在使用以下方法观察它的滚动事件:
val scrollListener = NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, _ ->
Log.d(TAG, "scrollListener: Scrolled! $scrollY")
setNavBarVisibilityFor(offset = scrollY)
}
scrollView.setOnScrollChangeListener(scrollListener)
但是,根据异步事件,我可能需要也可能不需要在该滚动侦听器中调用另一个方法。在 80% 的情况下,我不需要额外的调用,所以我不想在每次触发滚动侦听器时添加一个 bool 来检查,并据此决定方法调用。
我正在尝试从我的NestedScrollView 中删除附加的滚动侦听器并创建并附加一个新侦听器:
val extraScrollListener = NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, _ ->
Log.d(TAG, "extraScrollListener: Scrolled! $scrollY")
setNavBarVisibilityFor(offset = scrollY)
anotherMethodThatNeedsToBeRun(offset = scrollY)
}
//TODO: Remove the original scrollListener from the scrollView
scrollView.setOnScrollChangeListener(extraScrollListener)
如何在附加新的之前从我的滚动视图中删除原来的NestedScrollView.OnScrollChangeListener?
【问题讨论】:
-
您是否尝试设置
null以摆脱 OnScrollChangeListener?这适用于由“set....”分配的其他几个侦听器 -
感谢您的评论!事实证明,即使调用
scrollView.setOnScrollChangeListener(extraScrollListener)也会用新的滚动侦听器替换旧的滚动侦听器,或者@BömachtBlau 建议的null。我昨天可能太累了,没有意识到我的 Log 语句来自哪里。
标签: android kotlin android-scrollview android-nestedscrollview onscrolllistener