美文网首页
5种方法完美解决android软键盘挡住输入框方法详解

5种方法完美解决android软键盘挡住输入框方法详解

作者: 鸡鸣寺的樱花 | 来源:发表于2019-11-26 13:51 被阅读0次

    我们在开发android APP中经常会遇到键盘挡住输入框的情况,必须先把键盘收起,再去获取下面输入框焦点,这样用户体验也非常不好,今天就给大家介绍5种完美解决android键盘挡住输入框的方法。

    在开发中,经常会遇到键盘挡住输入框的情况,比如登录界面或注册界面,弹出的软键盘把登录或注册按钮挡住了,用户必须把软键盘收起,才能点击相应按钮,这样的用户体验非常不好。像微信则直接把登录按钮做在输入框的上面,但有很多情况下,这经常满足不了需求。同时如果输入框特别多的情况下,点击输入时,当前输入框没被挡住,但是当前输入框下面的输入框却无法获取焦点,必须先把键盘收起,再去获取下面输入框焦点,这样用户体验也非常不好,那有什么办法呢? 

    系统的adjustResize和adjustPan有什么区别,他们使用时的注意事项,有什么系统要求及蔽端呢?

    下面对几种在开发中常用的方法进行总结:

    方法一:非透明状态栏下使用adjustResize和adjustPan,或是透明状态栏下使用fitsSystemWindows=true属性

    主要实现方法:

    在AndroidManifest.xml对应的Activity里添加

    android:windowSoftInputMode=”adjustPan”或是android:windowSoftInputMode=”adjustResize”属性

    这两个属性作用都是为了调整界面使键盘不挡住输入框 ,我这里对这两种属性使用场景、优缺点、注意事项进行了全方面总结,不知大家平时使用时是否注意到了。

    属性注意事项优缺点失效情况适用情况

    adjustResize需要界面本身可调整尺寸,

    如在布局添加ScrollView,或输入控件属于RecycleView/ListView某一项

    优点:1.不会把标题栏顶出当前布局;

    2.有多项输入时,当前输入框下面的输入框可上下滑动输入

    缺点:1.需要界面本身可调整尺寸;

    2. 全屏时失效

    1.Activity主窗口尺寸无法调整;

    2.Activity全屏

    3.android5.0以上通过style设置沉浸式状态栏模式而不设置fitSystemWindow为true

    非全屏或是非沉浸式状态栏输入界面,输入框比较多

    adjustPan页面不会重新布局,当前输入框和键盘会直接将当前输入框以上界面整体向上平移,这样即使界面包含标题栏,也会被顶上去优点: 使用简单,不需要界面本身可调整尺寸,不会有失效情况

    缺点: 会把标题栏顶出当前布局;有多项输入时,当前输入框下面的输入框无法输入,必须收起键盘显示输入框再输入

    无有少量输入项,且输入量居界面上方

    fitsSystemWindows如果多个View设置了fitsSystemWindows=”true”,只有初始的view起作用,都是从第一个设置了fitsSystemWindows的view开始计算padding优点:使用简单,需要沉浸式状态栏的界面,不需要自己计算padding状态栏的高度

    缺点:使用有限制

    1.View 的其他 padding 值被重新改写了

    2.手机系统版本>=android 4.4

    1.界面全屏

    2.设置界面主题为沉浸式状态栏

    adjustResize失效情况:activity设置了全屏属性指Theme.Light.NotittleBar.Fullscreen(键盘弹起时会将标题栏也推上去)或者设置了activity对应的主题中android:windowTranslucentStatus属性,设置方式为:android:windowTranslucentStatus=true,这时如果对应的页面上含有输入框,将会导致点击输入框时软键盘弹出后键盘覆盖输入框,导致输入框看不见。

    fitsSystemWindows=”true”只有初始的view起作用:如果在布局中不是最外层控件设置fitsSystemWindows=”true”那么设置的那个控件高度会多出一个状态栏高度。若有多个view设置了,因第一个view已经消耗掉insect,其他view设置了也会被系统忽略。

    相关文章

      网友评论

          本文标题:5种方法完美解决android软键盘挡住输入框方法详解

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