前言:在開發(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;