所需要的属性:windowSoftInputMode
windowSoftInputMode介绍
windowSoftInputMode中文:窗口输入模式。
一般是在AndroidManifest.xml
的<activity/>
下配置的或者是在App的主题(theme)中设置。
属性介绍
1 stateAlwaysHidden
当跳到此activity时软键盘总是隐藏的
2 stateHidden
初次加载时软键盘是隐藏的,当从其他界面返回时则会根据上一个activity的软键盘状态来判断是否显示
3 stateUnchanged
根据上一个界面来判断当前软键盘是否隐藏
4 stateVisible
初次加载时软键盘是显示的,当从其他界面返回时则会根据上一个activity的软键盘状态来判断是否显示
5 stateAlwaysVisible
当跳到此activity时软键盘总是显示的
6 stateUnspecified
系统默认的软键盘状态。
7 adjustResize
始终调整Activity主窗口的尺寸,来为屏幕上的软键盘腾出空间
7.1 优缺点
优点:
- 不会把标题栏顶出当前布局
- 有多项输入时,当前输入框下面的输入可上下滑动输入
缺点:
- 需要界面本身可以调整布局
- 全屏时失效
7.2 注意事项:
需要界面本身可以调整尺寸,如在布局中添加ScrollView,或输入控件属于RecycleView/ListView某一项
失效情况
- Activity主窗口无法调节
- Activity全屏
- android5.0以上通过style设置沉浸式状态栏模式而不设置
fitSystemWindows
为true
注:
如果多个View设置了fitsSystemWindows=“true”,只有初始的View起作用,都是从第一个设置了这个的view开始计算padding
优点:使用简单,需要沉浸式状态的界面,不需要自己计算padding状态栏高度
缺点:使用有限制
失效情况:View的其他padding值被重新改写了
适用情况:界面全屏、设置界面主题为沉浸式状态栏
7.3适用情况
非全面屏或是非沉浸式状态栏输入界面,输入框较多。
8 adjustPan
不调整Activity主窗口的尺寸来为软键盘腾出空间,而是自动平移窗口的内容,使当前焦点永远不被键盘遮挡,让用户始终都能看到其输入的内容。这通常不如尺寸调正可取,因为用户可能需要关闭软键盘以达到被遮盖的窗口部分或与这些部分进行交互
8.1 注意事项
页面不会重新布局,当前输入框和键盘会直接将当前输入框以上的界面整体向上平移,这样即使界面包含标题栏,也会被顶上去。没有失效情况。
8.2 优缺点
优点:
- 使用简单,不需要界面本身可调整尺寸,不会有失效情况。
缺点:
- 会把标题栏定出当前界面
- 有多个输入时,当前输入框下面的输入框无法输入,必须收起键盘显示输入框再输入
8.3 适用情况
有少量输入项,且输入量据界面上方
9 adjustUnspecified
系统默认的布局状态。
10 adjustNothing
布局不会发生变化,软键盘覆盖在其上面,底部会被遮挡