我已经定义了以下代码,因此,如果用户位于滚动视图顶部,则可以使用swiperefreshlayout。
recyclerView.getViewTreeObserver().addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener {
if (recyclerView.scrollY == 0) {
binding.refreshed!!.isEnabled = true
} else {
binding.refreshed!!.isEnabled = false
}
})
但是此代码仅在我第一次移动recyclerview时做出反应(顺便说一句,它在开始时位于位置0,执行移动时认为它位于位置0),其余时间永远不会触发监听器
我可能做错了什么?
PD:使用以下代码可以实现所需的行为:
val layoutManager = LinearLayoutManager(this.context);
recyclerView.setLayoutManager(layoutManager);
recyclerView.getViewTreeObserver().addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener {
if (layoutManager.findFirstCompletelyVisibleItemPosition() == 0) {
binding.refreshed!!.isEnabled = true
} else {
binding.refreshed!!.isEnabled = false
}
})
答案 0 :(得分:1)
您可以尝试在recyclerview上获得最高排名
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
if(layoutManager.findFirstCompletelyVisibleItemPosition()==0) {
binding.refreshed!!.isEnabled = true
}
else {
binding.refreshed!!.isEnabled = false
}