2015-12-09 35 views
0

我在底部有线性布局,我想在向上滚动和向下滚动时隐藏该视图。我可以通过回收站视图中的滚动监听器来实现这一点。但是有一个问题,当你滚动慢速浏览时闪烁(快速显示和隐藏)。在回收视图中隐藏/显示滚动时查看轻弹

这是我的代码

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

这很正常,因为您的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; 
      } 

     } 
    }); 
+0

谢谢你这么多的解释,你的代码工作就像一个魅力,我只是改变RecyclerView.SCROLL_STATE_IDLE到RecyclerView.SCROLL_STATE_DRAGGING因为视图没有显示在向上滚动(我上滚/下滚动状态)。 –

相关问题