解決問題:recyclerview未滑動(dòng)到頂部就進(jìn)行下拉刷新
解決方法:對(duì)recyclerview進(jìn)行滑動(dòng)監(jiān)聽,然后禁用和啟用刷新控件。
第一種方式:
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//解決滑動(dòng)沖突
boolean enable=recyclerView.getChildCount() == 0 || recyclerView.getChildAt(0).getTop() >= 0;
mRefresh.setEnabled(enable);
}
});
第二種方式:
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//解決滑動(dòng)沖突
mRefresh.setEnabled(manager.findFirstVisibleItemPosition() == 0);
}
});
第三種方式:
recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//解決滑動(dòng)沖突
int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
mRefresh.setEnabled(topRowVerticalPosition >= 0);
}
});
任君挑選,目測(cè)第二種最好用。