當 RecyclerView 當作 聊天訊息時,要怎麼處理 KeyBoard 彈出 被擋住的問題?
Published in
Feb 8, 2021
前言
最近 修改 公司產品的 聊天頁面,發現一個問題,每當 EditTextView 點擊輸入時,彈出的 KeyBoard,會擋住最下面的訊息。而需求是 按輸入框的時候,畫面要移到訊息最底部。
示意圖
彈出的鍵盤擋住最下面的訊息
作法
RecyclerView
添加 addOnLayoutChangeListener(OnLayoutChangeListener listener)
,根據佈局變化時 oldbottom
和 bottom
值 的差距,來判斷是否目前是否有鍵盤彈出。如果 RecyclerView
舊的 底部 比目前底部 更下面,表示目前的RecyclerView
因鍵盤的出現,整個View
的底部 被往上提高。
紅色框線 原本 RecyclerView
佔 的佈局
紅色框線 為 RecyclerView
在出現鍵盤之後佔 的佈局
並在監聽到 有鍵盤彈出之後,滾動到最下面的位置。