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