功能专区Android开发Android开发

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;

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

上一篇下一篇

猜你喜欢

热点阅读