Android 软键盘遮挡解决

作者: 薛之涛 | 来源:发表于2018-03-26 15:51 被阅读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

相关文章

网友评论

  • 全汪汪:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    一句话就好了...
    蜗牛学开车:全屏情况下不行,这是安卓的一个bug,但是给他补上,有人已经给了解决方案,一行代码可以搞定。
    薛之涛:我试过,部分情况是不行的
    宿根草:这脸打得233333
  • 沐小晨曦:细节!
    AndroidDMW:https://www.jianshu.com/p/b0e90aa5688d 可以看下这个:blush:

本文标题:Android 软键盘遮挡解决

本文链接:https://www.haomeiwen.com/subject/zzhrcftx.html