监听软键盘高度变化涉及到两个较重要的知识点
windowSoftInputMode
windowSoftInputMode总共分两类:
第一类以adjust开头,决定了键盘弹出之后以何种方式去挤压activity中的元素:
- adjustResize-挤压
- adjustPan-把整个Activity往上推
- adjustNothing-浮在Activity之上
第二类以state开头,这个要关联两个Activity去理解,比如ActivityA正在弹出键盘输入用户名,然后ActivityB里面需要填银行卡,那跳转ActivityB时键盘是隐藏呢还是
继续显示?针对ActivityB而言需要可能有如下几种选择:
- 不管前面的Activity是否显示键盘,我多需要正常弹出键盘-stateAlwaysVisible
- 不管前面的Activity是否显示键盘,我多需要隐藏键盘-stateAlwaysHidden
- …
另stateAlways和state区别:前者Activity获取焦点就会起作用,后者只有进入才起作用(返回到当前Activity不会起作用)