简介
android:windowSoftInputMode 是 Androidmanifest.xml 中 activity 的一个属性,例如
<activity
android:name=".ui.activity.main.QRVinActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan|stateHidden" >
</activity>
它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。各个值之间用|分开,例如
android:windowSoftInputMode="stateHidden|adjustResize"
作用
用于设置当前activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡的问题。
这个属性能影响两件事情:
- 当有焦点产生时,软键盘是隐藏还是显示
- 是否减少活动主窗口大小以便腾出空间放软键盘
可选值
windowSoftInputMode可选值有以下这些:
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged",
"stateHidden",
"stateAlwaysHidden",
"stateVisible",
"stateAlwaysVisible",
"adjustUnspecified",
"adjustResize",
"adjustPan"]
各值含义
stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
stateHidden:用户选择activity时,软键盘总是被隐藏
stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
stateVisible:软键盘通常是可见的
stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
一般来说,用的比较多的还是
android:windowSoftInputMode="stateHidden|adjustResize"
android:windowSoftInputMode="stateHidden|adjustPan"
这两对组合。
“adjustResize”在使用时布局会被软键盘顶上去,体验非常不好
“adjustPan”在使用时获取焦点的控件下边的View将会被软键盘覆盖
也就是说如果页面被键盘顶上去,可以设置 android:windowSoftInputMode=”stateHidden|adjustPan” 设置不被顶上去。