在回收器视图中隐藏/显示滚动时查看轻弹

时间:2015-12-09 23:07:42

标签: android scroll android-recyclerview show-hide

我在底部有线性布局,我希望在向上滚动时隐藏该视图并在向下滚动时显示。我能够通过回收器视图上的滚动侦听器实现这一点。但是有一个问题,当你滚动慢视图时会闪烁(快速显示和隐藏)。

这是我的代码

bottom = (LinearLayout) getActivity().findViewById(R.id.linerabottom);
    recycleList.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 0) {
                bottom.setVisibility(View.GONE);

            } else {
                bottom.setVisibility(View.VISIBLE);
            }

        }
    });

以下是问题https://goo.gl/photos/TwUJjmPUA4kJCsaR8的视频。

你能帮我找出问题所在吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

这是正常现象,因为您的dy在某个时间点在dy >= 0dy < 0之间波动。如果你想要实现一种快速返回视图,你应该把它绑定到这样的东西:

 recycleList.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            mTotalDy += dy;
            if (dy > 0 && mTotalDy >= bottom.getHeight()) {
                bottom.setVisibility(View.GONE);

            } else if(recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_IDLE && bottom.getVisiblity() == View.GONE) {
                bottom.setVisibility(View.VISIBLE);
                mTotalDy = 0;
            }

        }
    });