您的位置:首页 > 移动开发 > Android开发

Activity中windowSoftInputMode属性

2016-06-25 17:41 281 查看
android:windowSoftInputMode用来设置Activity主窗口与软键盘的交互模式,该属性的设置会影响两件事情:

1. 当有焦点产生时,软键盘是隐藏还是显示

2. Activity的主窗口调整,是否减少主窗口大小以便腾出空间放软键盘

android:windowSoftInputMode属性一共有9个取值,分别是:

stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize,adjustPan

它的设置必须是上面的一个值,或者是 ”state…”值加 ”adjust…”值的组合

属性值作用效果
stateUnspecified软键盘的状态没有被指定,系统将选择一个合适的状态或依赖于主题的设置,这个是为了软件盘行为默认的设置
stateUnchanged当前界面的软键盘状态,取决于上一个界面的软键盘状态,无论是隐藏还是显示
stateHidden当用户选择该 Activity时,软键盘被隐藏
stateAlwaysHidden当该Activity主窗口获取焦点时,软键盘总是被隐藏的
stateVisible软键盘是可见的,当用户导航到Activity主窗口时
stateAlwaysVisible软键盘是可见的,但是与stateVisible属性有小小的不同之处。举个例子,当我们设置为stateVisible属性,如果当前的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,软键盘会因为输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏的。但是如果我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,但是当我们再次回来的时候,软键盘是会显示出来的
adjustUnspecified从这个属性开始,就不是设置软键盘的显示与隐藏模式了,而是设置软键盘与软件的显示内容之间的显示关系。当我们没有设置这个值的时候,这个选项也是默认的设置模式。在这中情况下,系统会根据界面选择不同的模式。如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容
adjustResize该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间,如果有滑动控件的布局, 那么滑动控件会调整大小;如果没有滑动控件布局,则布局的位置并没有发生什么变化,软键盘会盖住一些内容
adjustPan如果设置为这个属性,那么Activity的屏幕大小并不会调整来保证软键盘的空间,而是采取了另外一种策略,系统会通过布局的移动, 来保证用户要进行输入的输入框肯定在用户的视野范围里面,从而让用户可以看到自己输入的内容。对于没有滑动控件的布局来说,如果我们选择的位置偏下,部分控件会被顶上去
如果我们不设置”adjust…”的属性, 对于没有滚动控件的布局来说,采用的是adjustPan方式,而对于有滚动控件的布局,则是采用的adjustResize方式

注意:当设置属性:android:windowSoftInputMode = “adjustResize”,软键盘弹出时,要对主窗口布局重新进行布局,并调用onSizeChanged方法. 而当我们设置android: windowSoftInputMode = “adjustPan”时,主窗口就不会调用onSizeChanged方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android