键盘弹出时,会将布局底部的导航条顶上去。
先给出很多文章中给出的解决办法如下:
在mainfest.xml中,在和导航栏相关的activity中加:
然而我设置了之后还是会被遮挡住输入内容。但我发现有些情况下上面的设置方法是有效的。最终原因发现是跟我们的activity布局有关系。布局外层如果是相对布局RelativeLayout时候,虽然按照上面设置后,布局确实会被重新调整,但是如果在RelativeLayout中加入了比如确定按钮,属性为layout_alignParentBottom = true。此时该按钮依然会始终停留在软键盘上方,导致输入内容被遮挡。
最终的解决办法其实是使用adjustPan属性即可完美解决问题。
android:windowSoftInputMode
=
"adjustPan"
windowSoftInputMode 属性解释:
活动的主窗口如何与包含屏幕上的软键盘窗口交互。这个属性的设置将会影响两件事情:
- 软键盘的状态——是否它是隐藏或显示——当活动(Activity)成为用户关注的焦点。
- 活动的主窗口调整——是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被
软键盘覆盖时它的内容的当前焦点是可见的。
在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值
它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。
各值的含义:
【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
【C】stateHidden:用户选择activity时,软键盘总是被隐藏
【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【E】stateVisible:软键盘通常是可见的
【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总