(三十八)android:windowSoftInputMode属性详解
一、android:windowSoftInputMode的作用
activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,是android1.5后的一个新特性。
这个属性能影响两件事情:1、当有焦点产生时,软键盘是隐藏还是显示。2、是否减少活动主窗口大小以便腾出空间放软键盘.
二、如何设置android:windowSoftInputMode
它的设置必须是下面列表中的一个值,或一个“state...”值加一个“adjust...”值的组合。在任一组设置多个值,各个值之间用|分开。例如: android:windowSoftInputMode="adjustPan|stateHidden"。在这设置的值(除“stateUnspecified”和“adjustUnspecified”以外)将覆盖在主题中设置的值。
A、stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置。
B、stateUnchanged:中文的意思就是状态不改变的意思,我们应该怎么理解这句话呢?其实很好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个例子,假如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;如果当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。
C、stateHidden:如果我们设置了这个属性,那么键盘状态一定是隐藏的,不管上个界面什么状态,也不管当前界面有没有输入的需求,反正就是不显示。因此,我们可以设置这个属性,来控制软键盘不自动的弹出
D、stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘总是被隐藏
E、stateVisible:软键盘通常是可见的。可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来。
F、stateAlwaysVisible:这个属性也是可以将键盘召唤出来,但是与stateVisible属性有小小的不同之处。举个例子,当我们设置为stateVisible属性,如果当前的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,软键盘会因为输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏的。但是如果我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,但是当我们再次回来的时候,软键盘是会显示出来的。所以,这个Always就解释了这个区别,不管什么情况到达当前界面(正常跳转或者是上一个界面被用户返回),软键盘都是显示状态。
G、adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
H、adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
I、adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户总是能看到输入内容的部分。