Android软件盘WindowSoftInputMode属性详解

在开发当中,我们常常需要让客户输入电话、验证码、金额、密码等,这个时候如果软件盘设置不好,那么可能导致一个糟糕的用户体验,比如可能会出现,软件盘遮挡住输入框下面的提交按钮,其他输入框无法输入等,其实只要我们设置好WindowSoftInputMode的属性,这种问题还是可以完美解决的。下面我们来看看WindowSoftInputMode的详细属性
属性主要分为两类:
控制软件盘显示的时机:
1、stateUnspecified:未指定状态,系统默认的就是这种状态,一般来讲,当页面没有输入焦点的时候,软件盘是不弹出的,但是当输入焦点位于一个可以滚动的页面上的时候就会弹出来了。比如说ScollView包裹一个EditText ,那么这时就会弹出。
2、stateUnchanged:状态未改变状态,也就是说,上一个页面是隐藏的,进入下一个页面时也是隐藏的。
3、stateHidden:隐藏状态,这种状态和第四种stateAlwaysHidden不同,stateHidden表示的是进入一个页面时是隐藏的,当从一个页面返回的时候软键盘就不会再隐藏
4、stateAlwaysHidden:一直隐藏状态,就是说无论是进入还是返回一个页面,软键盘始终是隐藏状态,除非获取焦点来唤醒它
5、stateVisible:进入页面时软键盘一直显示出来,当返回页面时不再显示。
6.stateAlwaysVisible:意思就是软键盘在进入或者返回时都是显示出来的状态。
控制软键盘与显示内容直接的关系
1、adjustUnspecified:这个选项是默认的设置模式。在这中情况下,系统会根据界面选择不同的模式。如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容。
2、adjustResize:这个属性表示Activity的主窗口总是会被调整大小,从而保证软键盘显示空间。设置为adjustResize属性之后,对于没有滑动控件的布局,虽然还是不能选择所有的输入框,但是,窗口的显示方式发生了变化,默认属性时,整个布局是被顶上去了,但是设置为adjustResize属性,布局的位置并没有发生什么变化,这就是最大的区别。而对于有滑动控件的布局来说,显示效果和默认是一样的。
3、adjustPan:如果设置为这个属性,那么Activity的屏幕大小并不会调整来保证软键盘的空间,而是采取了另外一种策略,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的失业范围里面,从而让用户可以看到自己输入的内容。对于没有滚动控件的布局来说,这个其实就是默认的设置,而对于有滚动控件的布局,则是采用的adjustResize方式。
总结:
1、如果我们不设置"adjust…"的属性,对于没有滚动控件的布局来说,采用的是adjustPan方式,而对于有滚动控件的布局,则是采用的adjustResize方式。
2、state…和adjust…可以混合使用,比如:stateVisible|adjustPan,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章