Android软键盘挡住输入框问题的终极解决方案

  • 前言

    开发做得久了,总免不了会遇到各种坑。
    而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑——来来来,我们慢慢看。

    入门篇

    Base

    最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText。
    对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResize即可,像这样:

    <activity android:name=".MainActivity"
        android:windowSoftInputMode="adjustPan"  >
        ...
    </activity>
    

    一般来说,他们都可以解决问题,当然,adjustPanadjustResize的效果略有区别。

    • adjustPan是把整个界面向上平移,使输入框露出,不会改变界面的布局;
    • adjustResize则是重新计算弹出软键盘之后的界面大小,相当于是用更少的界面区域去显示内容,输入框一般自然也就在内了。

    ↑↑↑ OK,这只是入门,基本上地球上所有的Android工程师都能搞定。
    别急,看下面~

    加上WebView试试看?坑来了……

    上面的入门篇中,软键盘是由原生的EditText触发弹出的。而在H5、Hybrid几乎已经成为App标配的时候,我们经常还会碰到的情况是:软键盘是由WebView中的网页元素所触发弹出的

    情况描述

    这时候,情况就会变得复杂了:

    1. 首先,页面是非全屏模式的情况下,给activity设置adjustPan会失效。
    2. 其次,页面是全屏模式的情况,adjustPanadjustResize都会失效。

    ——解释一下,这里的全屏模式即是页面是全屏的,包括Application或activity使用了Fullscreen主题、使用了『状态色着色』、『沉浸式状态栏』、『Immersive Mode』等等——

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值