Android 軟鍵盤遮擋解決

前言:在開發(fā)過程中難免會遇到在軟鍵盤遮擋輸入框的問題,今天來整理一下。

參考:作者:leandom

? ? ? ? 鏈接:http://www.itdecent.cn/p/9eb57a8ff5e5

效果圖:


正常


軟鍵盤彈出


解決問題后


解決思路:


思路

我們要做的就是在軟鍵盤彈出后顯示的位置為空白區(qū)域,不超過內(nèi)容區(qū)域,也就是登錄按鈕一下。

有小伙伴提問了,除非空白區(qū)域和軟鍵盤一樣大小,如果軟鍵盤區(qū)域大于空白區(qū)域那豈不是還有覆蓋嗎?對的。

?那有什么解決方式嗎? 答:內(nèi)容區(qū)域向上移動即可。

? 如何知道內(nèi)容區(qū)域向上移動多少呢?答:這個就要通過計算了,如圖:


首先我們是有辦法獲取內(nèi)容區(qū)域的大小也就是高的(代碼中體現(xiàn)),然后屏幕的高減去內(nèi)容區(qū)域的高就是軟鍵盤的高度,知道了軟鍵盤的高度(軟鍵盤的高度無法改變,那么只好調(diào)整內(nèi)容區(qū)域距離頂部的margintop值了,比如-20的dp,那么不就實現(xiàn)效果了嗎。)。

主要代碼:

第一步:

獲取屏幕分辨率:

int? screenHeight=activity.getResources().getDisplayMetrics().heightPixels;

第二步:

/Rect 其實就是左上右下

Rect rect =new Rect();//不知道自行了解,代碼中都有注釋

//獲取當前窗口可視區(qū)域大小(內(nèi)容區(qū)域)也就是獲取內(nèi)容區(qū)域高度,activity為loginActivity

activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);

//這就是軟鍵盤的高度

int newBlankheight =screenHeight - rect.bottom;

github地址:https://github.com/searchdingding/KeyBoardDemo

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容