题记:
马上就国庆长假了,感觉很开心呀。
windowSoftInputMode 是Android提供给我们设置activity窗口和软件盘的交互模式,一共有两种设置方式:
第一种:清单文件中设置
<activity
android:name=""
android:theme="@style/translucent"
android:windowSoftInputMode="stateAlwaysVisible|adjustResize"/>
第二种:代码中设置
WindowManager.LayoutParams params = activity.getWindow().getAttributes(); if (params.softInputMode != softInputMode) { params.softInputMode = softInputMode; params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; activity.getWindow().setAttributes(params); }
if (!activity.isFinishing()) { activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_MODE_CHANGED); }
这边记录下一些常用的模式,这些模式主要区分为两种,一种是state开头的,还有一种是adjust开头的,state开头的是软键盘是否弹出有关,adjust是窗口的布局和软键盘显示的关系
1.stateAlwaysVisible : 进入activity和返回到当前的activity 的时候弹出软键盘
2.stateVisible :和stateAlwaysVisible 属性一样的意思,唯一的区别是在返回的时候不弹出软键盘
3. stateHidden:Editext即使获取焦点也隐藏软键盘隐藏软键盘,除非用户手动点击输入框来唤起软键盘,代码设置获取焦点 也无效
4.adjustUnspecified: 默认的设置,由系统来决定是否弹出软键盘,一般有editext都会弹出软键盘
5.adjustResize:布局指定底部的布局会随着软键盘弹出,而改变位置,常见的场景为QQ和微信输入框上面的布局
6.adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分,意思是整体的布局会随着软件盘的移动而移动,不让软键盘遮挡住输入框
7.stateUnchanged:当前窗口的软键盘的显示状态和他上一个窗口保持一致