2017-04-21 52 views
-1

我要显示和隐藏按钮时recyclerview向上和向下滚动一段距离(按钮Distnce高度),我已经写了一些代码,但它并不如预期的工作如何计算距离上下滚动回收视图

@Override 
public void onScrolled(RecyclerView view, int dx, int dy) { 
    super.onScrolled(view, dx, dy); 
    if (verticalOffset > floatingActionMenu.getHeight() && dy > 0) { 
     floatingActionMenu.setVisibility(View.VISIBLE); 
    } else { 
     floatingActionMenu.setVisibility(View.GONE); 
    } 
    verticalOffset += dy; 
} 
+0

如果用户正在向上滚动并且如果用户向下滚动,则想要显示按钮。你想要这个吗? –

+0

是的,我想要的东西 – apk

+0

你有解决方案吗? –

回答

0

也尝试实现onScrollStateChange。

我的草案看起来像这样。

int distance =0; 
    int scrollDirection; 

    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
     super.onScrolled(recyclerView, dx, dy); 
     scrollDirection = dy; 
     distance+=dy; 
     Log.d("TAG", "onScrolled: " + dy); 
    } 

    @Override 
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
     if (newState == RecyclerView.SCROLL_STATE_IDLE) { 
      if (scrollDirection > 0) { 
       Log.d("TAG", "onScrollStateChanged: " + " STOPPED " + distance); 
       distance = 0; 
      } else { 
       Log.d("TAG", "onScrollStateChanged: " + " STOPPED " + distance); 
       distance = 0; 
      } 
     } 
    } 

根据最终distance值你onScrollStateChange让你可以deside,隐藏你的按钮或没有。我应该告诉你,你还必须在onScrollStateChanged中隐藏/显示你的FAB吗?