Android 软键盘遮挡解决
2018-03-26 本文已影响399人
薛之涛
前言:在开发过程中难免会遇到在软键盘遮挡输入框的问题,今天来整理一下。
参考:作者:leandom
链接:https://www.jianshu.com/p/9eb57a8ff5e5
效果图:



解决思路:

我们要做的就是在软键盘弹出后显示的位置为空白区域,不超过内容区域,也就是登录按钮一下。
有小伙伴提问了,除非空白区域和软键盘一样大小,如果软键盘区域大于空白区域那岂不是还有覆盖吗?对的。
那有什么解决方式吗? 答:内容区域向上移动即可。
如何知道内容区域向上移动多少呢?答:这个就要通过计算了,如图:

首先我们是有办法获取内容区域的大小也就是高的(代码中体现),然后屏幕的高减去内容区域的高就是软键盘的高度,知道了软键盘的高度(软键盘的高度无法改变,那么只好调整内容区域距离顶部的margintop值了,比如-20的dp,那么不就实现效果了吗。)。
主要代码:
第一步:
获取屏幕分辨率:
int screenHeight=activity.getResources().getDisplayMetrics().heightPixels;
第二步:
/Rect 其实就是左上右下
Rect rect =new Rect();//不知道自行了解,代码中都有注释
//获取当前窗口可视区域大小(内容区域)也就是获取内容区域高度,activity为loginActivity
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
//这就是软键盘的高度
int newBlankheight =screenHeight - rect.bottom;