Android 软键盘遮挡解决

前言:在开发过程中难免会遇到在软键盘遮挡输入框的问题,今天来整理一下。

参考:作者: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;

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容