如何解决onScrollListener会在滚动时冻结UI
我有一个选项卡布局,需要在当前的滚动索引处进行选择,为此,我已经在数组中存储了我的回收站视图中标头所在的索引,此后,当用户从上到下滚动时,选择标签,而onScrollListener比较当前位置以匹配当前标签数组中与这些索引匹配的位置。
当我从列表的底部到顶部时,此行为运行良好,所有选项卡均已选中,并且一切正常,问题是当我从顶部滚动至底部时,似乎计算量很大,并且UI冻结(不滚动)
private fun setupRecyclerViewListener() {
binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView,dx: Int,dy: Int) {
super.onScrolled(recyclerView,dx,dy)
with(binding.recyclerView.layoutManager as? LinearLayoutManager) {
val position = this?.findFirstCompletelyVisibleItemPosition()?.minus(1)
sectionsIndexes.forEachIndexed { index,i ->
if (i == position) {
binding.tabLayout.getTabAt(index)?.select()
}
}
}
}
})
}
这会导致recyclerview冻结,从上到下滚动,但从下到上滚动工作
我已调试,并在binding.tabLayout.getTabAt(index)?.select()
是的地方放置了一个日志,该日志输出了正确的值,而没有冻结滚动,但是似乎在选项卡上执行select()会冻结所有内容用户界面
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。