RecyclerView onScrollChangeListener

问题描述:

我需要隐藏并显示一个浮动操作按钮,而我上下滚动一个RecyclerView,我在SDK 23下成功实现了这一点,下面显示的代码(newReminder是我需要隐藏和显示的按钮):RecyclerView onScrollChangeListener

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { 
@Override 
public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
    super.onScrollStateChanged(recyclerView, newState); 
} 

@Override 
public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
    super.onScrolled(recyclerView, dx, dy); 

    if (scrolledDistance > HIDE_THRESHOLD && !newReminder.isMenuButtonHidden()) { 
     newReminder.hideMenuButton(true); 
     scrolledDistance = 0; 
    } else if (scrolledDistance < -HIDE_THRESHOLD && newReminder.isMenuButtonHidden()) { 
     newReminder.showMenuButton(true); 
     scrolledDistance = 0; 
    } 

    if((!newReminder.isMenuButtonHidden() && dy>0) || (newReminder.isMenuButtonHidden() && dy<0)) { 
     scrolledDistance += dy; 
    } 
} 

});

然而,对于SDK 23,当我使用onScrollChangeListener我糊涂了与参数,我下面的代码不工作了:

if(Build.VERSION.SDK_INT > 22){ 
recyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
    @Override 
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) 
     if (scrolledDistance > HIDE_THRESHOLD && !newReminder.isMenuButtonHidden()) { 
      newReminder.hideMenuButton(true); 
     } else if (scrolledDistance < -HIDE_THRESHOLD && newReminder.isMenuButtonHidden()) { 
      newReminder.showMenuButton(true); 
     } 
     if((!newReminder.isMenuButtonHidden() && scrollY > 0) 
       || (newReminder.isMenuButtonHidden() && scrollY < 0)) { 
      scrolledDistance = oldScrollY - scrollY; 
     } 
    } 
}); 

}

我想我误解了它的意思scrollY和oldScrollY,任何人都可以帮助我吗?谢谢!!!

setOnScrollChangeListener(OnScrollChangeListener l)是对已弃用方法setOnScrollListener(OnScrollListener listener)的错误更换。代替使用addOnScrollListener(OnScrollListener)removeOnScrollListener(OnScrollListener)。这些方法与参数OnScrollListener相同,因此您不必担心逻辑上的更改。 与以前的实现唯一的区别是现在您可以将多个侦听器添加到RecyclerView。

这里是到documentation

+0

一个链接,你知道为什么'addOnScrollListener'是红色的,而不是由Android工作室接受? –