【问题标题】:How to avoid recyclerview shaking while scrolling?滚动时如何避免recyclerview晃动?
【发布时间】: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


【解决方案1】:

您可以尝试禁用项目动画器

mRecyclerViewHome.setItemAnimator(null);

【讨论】:

  • 我试过了,它仍然在晃动。它像混乱一样摇晃,不像动画。
猜你喜欢
  • 1970-01-01
  • 2014-03-01
  • 2011-07-06
  • 2015-04-16
  • 2016-07-17
  • 2018-05-03
  • 2021-10-23
  • 2018-06-03
  • 1970-01-01
相关资源
最近更新 更多