windowSoftInputMode这个Activity属性,经常会用到了,用来设置键盘的弹出与否,因为键盘的弹出会影响整个页面的布局的。最近项目里,有个需求,编辑图片上面一个标题的时候,页面不被顶上去,为的是上面的标题在输入的时候可见,然后编辑下面一个标题的时候,页面需要顶上去,为的是下面这个标题可见。这种情况就需要动态设置windowSoftInputMode了,先给出效果图:
编辑上面标题,页面不弹上去
编辑下面标题时,页面弹上去
好,怎么做的呢?
第一个效果需要动态设置windowSoftInputMode为:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
第二个效果需要动态设置windowSoftInputMode为:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
在AndroidManifest.xml这么设置:
1、stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
2、stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
3、stateHidden:用户选择activity时,软键盘总是被隐藏
4、stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
5、stateVisible:软键盘通常是可见的
6、stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
7、adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
8、adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
9、adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分