RecyclerView滑动到最底部失败

问题

在做一个聊天功能的时候需要用到RecyclerView来加承载消息 , 但是在新消息加入的时候 , 如果此时有图片类的消息 , 会使得滚动到最底部失败 , 依旧会停留到图片所在的位置.

期初以为是加载图片的时候会阻碍滚动的继续, 所以在onScrollStateChanged方法中添加了Picasso.with(ChatRoomActivity.this).resumeTag(mMsgAdapter);Picasso.with(ChatRoomActivity.this).pauseTag(mMsgAdapter); 两个方法 , 在滚动的时候暂停加载图片 , 然而发现在调用滚动的时候并没有走onScrollStateChanged 回调 . 所以…没用. 网上其他也有好多说什么 smoothScrollBy / smoothScrollOffset / smoothToPosition 的 , 看着就不对 , 试了试果然不对…

解决方法

LinearLayoutManager linearLayoutManager = new LinearLayoutManager();
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);

答案连接
重点是setStackFromEnd(true);
关于setStackFromEnd(true);方法 , 更多的请看这里

这个方法是让RecyclerView从底部开始依次显示Item , 如果你的Item数量足够少 , 你就会看到这样的现象 , 所以需要将RecyclerView的高度设置为 wrap_content :
RecyclerView滑动到最底部失败
图片出处