當 RecyclerView 當作 聊天訊息時,要怎麼處理 KeyBoard 彈出 被擋住的問題?

liy Elaine
liy Elaine
Published in
Feb 8, 2021

前言

最近 修改 公司產品的 聊天頁面,發現一個問題,每當 EditTextView 點擊輸入時,彈出的 KeyBoard,會擋住最下面的訊息。而需求是 按輸入框的時候,畫面要移到訊息最底部。

示意圖

彈出的鍵盤擋住最下面的訊息

作法

RecyclerView 添加 addOnLayoutChangeListener(OnLayoutChangeListener listener) ,根據佈局變化時 oldbottombottom值 的差距,來判斷是否目前是否有鍵盤彈出。如果 RecyclerView 舊的 底部 比目前底部 更下面,表示目前的RecyclerView 因鍵盤的出現,整個View 的底部 被往上提高。

紅色框線 原本 RecyclerView佔 的佈局

紅色框線 為 RecyclerView在出現鍵盤之後佔 的佈局

並在監聽到 有鍵盤彈出之後,滾動到最下面的位置。

--

--