RecyclerView滑动到最底部

手写了一个聊天室效果,最后发现不会自动滚动。

RecyclerView自带的逻辑是:

  • 当用户手动滑动时,出现新数据不会自动跳转到最后一行。
  • 当用户滑动到最后一行时,出现新数据会跳到最后一行。

事实上这不是RecyclerView的交互逻辑,这是指notify数据之后的情况。例如,你的maxline=10,当数据为10时,出线新数据,系统只是进行系统的替换,虽然会达到你要的效果,单是当你的maxline较大时,用户发言没有达到maxline限制当时候,就会出现页面不动情况。

解决方法:

第一种方法:

 mRecycleView.smoothScrollBy(distance,duration);

第二种方法:

 mRecycleView.smoothScrollOffset(offset);

第三种方法:

mRecycleView.smoothToPosition(index);

还有一个简单的方法,设置layoutmanager:

layoutmanager.setStackFromEnd(true);

这个情况的具体解析请看官方文档:

https://developer.android.com/reference/android/support/v7/widget/LinearLayoutManager#setstackfromend