当在聊天页面中消息Item的长度超过recycleView的长度的时候调用
recycleView.scrollToPosition(adapter.itemCount -1)
此时只能滑动到最后一条消息的最开始
recycleView.smoothScrollToPosition(adapter.itemCount)
调用此方法才可以滑动到最后一条消息的最底部
但是smoothScrollToPosition滑动的时候有动画效果
此时可以自定义LayoutManager修改滑动速度
class SmoothScrollLayoutManager(val context: Context) : LinearLayoutManager(context) {
override fun smoothScrollToPosition(
recyclerView: RecyclerView?,
state: RecyclerView.State?,
position: Int
) {
val smoothScroller = object : LinearSmoothScroller(context) {
override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
// 数值越大 速度越慢
return 0.01f / displayMetrics.density
}
}
smoothScroller.targetPosition = position
startSmoothScroll(smoothScroller)
}
}
如果你觉得动画的速度还不能接受 可以 scrollToPosition + 延迟 + smoothScrollToPosition 一起使用