ScrollViewChangeListener 没有按预期工作
ScrollViewChangeListener not working as expected
我已经定义了以下代码,所以如果用户在滚动视图的顶部,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
}
})
您可以试试这个以获得 recyclerview 的最高位置
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
if(layoutManager.findFirstCompletelyVisibleItemPosition()==0) {
binding.refreshed!!.isEnabled = true
}
else {
binding.refreshed!!.isEnabled = false
}
我已经定义了以下代码,所以如果用户在滚动视图的顶部,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
}
})
您可以试试这个以获得 recyclerview 的最高位置
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
if(layoutManager.findFirstCompletelyVisibleItemPosition()==0) {
binding.refreshed!!.isEnabled = true
}
else {
binding.refreshed!!.isEnabled = false
}