【发布时间】:2017-07-21 02:54:21
【问题描述】:
当用户滚动 recyclerview 时,我希望在向上滚动时显示 back_to_top 按钮,并在向上滚动时消失并在到达列表末尾时显示 load_more 按钮。 OnScrollListener 如下:
mRecyclerViewHome.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = layoutManager.getChildCount();
int totalItemCount = layoutManager.getItemCount();
int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();
if (pastVisibleItems + visibleItemCount >= totalItemCount) {
mButtonLoadMore.setVisibility(View.VISIBLE);
Log.i(TAG, "reach bottom detected");
}
// TODO: 7/20/2017 remove shaking
if (dy < 0) { // scrolling up
mButtonLoadMore.setVisibility(GONE);
mButtonToTop.setVisibility(VISIBLE);
}
if (dy > 0) {
mButtonToTop.setVisibility(GONE);
}
}
});
此代码有效。但问题是,如果当 recyclerview 正在滚动并且还没有停止时,我中断并触摸屏幕并做另一个滚动手势,则可能是 recyclerview 的视图在移动时正在晃动。我想这是因为我在代码中使用了 dy 参数,所以它会一直跟踪 dy 的值并导致视图抖动?在检测用户是向上还是向下滚动时,是否有办法避免这种晃动?
【问题讨论】:
-
你找到答案了吗?
标签: android scroll android-recyclerview