通过设置android:windowSoftInputMode="" 控制展示软键盘
参数分为两类:state* 与 adjust* ,前者设置软键盘的显示与隐藏,后者设置对当前展示页面布局的影响。可以同时设置一个state*与adjust*两个参数,例如:<activity android:windowSoftInputMode="stateVisible|adjustResize" >
stateUnspecified
未指定状态,有输入框时显示软键盘,反之不展示。
stateUnchanged
状态不改变,上一个界面展示当前也展示,反之不展示。
stateHidden
隐藏状态,默认隐藏软键盘
stateAlwaysHidden
总是隐藏状态,无论如何都不展示软键盘
stateVisible
展示状态,默认显示软键盘
stateAlwaysVisible
总是展示状态,无论如何都展示软键盘
adjustUnspecified
系统根据当前页面是否存在滚动视图进行调整,软键盘区域不够时,会隐藏标题栏。
adjustResize
stateUnspecified
未指定状态,有输入框时显示软键盘,反之不展示。
stateUnchanged
状态不改变,上一个界面展示当前也展示,反之不展示。
stateHidden
隐藏状态,默认隐藏软键盘
stateAlwaysHidden
总是隐藏状态,无论如何都不展示软键盘
stateVisible
展示状态,默认显示软键盘
stateAlwaysVisible
总是展示状态,无论如何都展示软键盘
adjustUnspecified
系统根据当前页面是否存在滚动视图进行调整,软键盘区域不够时,会隐藏标题栏。
adjustResize
有滚动控制时可以使用这种,如果页面占满整个屏幕,当弹出软键盘时,页面会重新刷新,界面中除去软键盘部分作为整个页面重新布局展示页面信息,也就是自动压缩布局。
例如:需要页面某个视图被顶起来可以使用此种布局。
1. 把视图设置成至于页面底部
2. 线性布局,把中间部分设置成weight = 1 , height = 0
3. 重写布局在onSizeChange中判断是否展示了软键盘,把视图调整到希望的位置。
adjustPan
如果弹出软键盘,直接覆盖在屏幕底部,软键盘显示区域下面的视图都被遮盖。
参考资料:
Android软键盘的隐藏显示研究
检测软键盘的弹起与隐藏【绝对经典,好用】