問題
在做一個聊天功能的時候需要用到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
:
圖片出處