【问题标题】:View flicking while hiding/showing on scroll in recycler view在回收站视图中隐藏/显示滚动时查看轻弹
【发布时间】:2015-12-09 23:07:41
【问题描述】:

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

这是我的代码

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问题的视频。

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

【问题讨论】:

    标签: android scroll android-recyclerview show-hide


    【解决方案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;
                }
    
            }
        });
    

    【讨论】:

    • 非常感谢您的解释,您的代码就像一个魅力,我只是将 RecyclerView.SCROLL_STATE_IDLE 更改为 RecyclerView.SCROLL_STATE_DRAGGING 因为视图在向上滚动时没有显示(我认为向上/向下滚动正在拖动状态)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多