zoukankan      html  css  js  c++  java
  • Android中Activity的android:windowSoftInputMode属性

    转载 https://blog.csdn.net/qiutiandepaomo/article/details/84028558

    windowSoftInputMode属性主要是用来设置窗口软键盘的交互模式的,这个属性会有两个影响:

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

    2)是否减少活动主窗口大小以便腾出空间放软键盘。

    这个属性一共有9个值,分别是:stateUnspecified、stateUnchanged、stateHidden、stateAlwaysHidden、stateVisible、stateAlwaysVisible、adjustUnspecified、adjustResize、adjustPan。

    1、stateUnspecified

    未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式,系统会根据界面采取相应的软键盘的显示模式:

    1)如果界面上只有文本和按钮的时候,软键盘就不会自动弹出;

    2)如果界面上出现了获取了焦点的输入框时,

    a、如果界面没有滚动需求,软键盘不会自动弹出;

    b、如果界面有滚动需求(如界面中有RecyclerView、ScrollView等可以滑动的控件)时,软键盘会自动弹出。

    2、stateUnchanged

    状态不改变,当前界面的软键盘状态,取决于上一个界面的软键盘状态,如果从上一个界面跳转到当前界面的时候,软键盘是显示的,那么到了这个界面软键盘也是显示的;如果从上一个界面跳转到当前界面的时候,软键盘是隐藏的,那么到了这个界面软键盘也是隐藏的。

    3、stateHidden

    状态隐藏,如果我们设置了这个属性,键盘状态就一定是隐藏的,不管上个界面是什么状态,也不管当前界面有没有输入的需求,就是不显示软键盘。

    4、stateAlwaysHidden

    状态隐藏,如果我们设置了这个属性,键盘状态就一定是隐藏的。和stateHidden效果几乎一样(暂未发现不同之处),比stateHidden隐藏范围更广。

    5、stateVisible

    状态显示,如果我们设置了这个属性,会把键盘召唤出来,即使在界面上没有输入框的情况下也会强制召唤出来。

    6、stateAlwaysVisible

    状态显示,这个属性也是将键盘召唤出来,与stateVisible属性小小的区别是:当我们设置了当前页面为stateVisible属性,如果当前的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,如果在新的页面软键盘隐藏起来,当我们再次回到当前页面的时候,键盘也是隐藏的;但是如果我们设置了当前页面为stateAlwaysVisible,跳转到下个页面,再回到当前页面的时候,软键盘也是会显示出来的。

    估计stateHidden和stateAlwaysHidden的区别也类似。

    7、adjustUnspecified

    未指定状态,这个是软键盘与页面之间显示关系的未指定状态、默认设置状态。这种状态下,系统会根据界面选择不同的模式,如果界面里有可滚动的控件,系统会缩小可以滚动的界面的大小来保证即使软键盘弹出了,也能够看到所有的控件;如果界面里没有可滚动的控件,那么软键盘可能就会盖住一些控件(布局的位置会发生变化,会让获取了焦点的控件显示出来,视情况隐藏可能会隐藏一些控件)。

    有滑动控件显示效果:

    图一:软键盘隐藏

    图二:第一条获取焦点软键盘显示

    图三:最后一条获取焦点软键盘显示

                      

    无滑动控件显示效果:

    图三:软键盘隐藏

    图一:第一条获取焦点显示软键盘(第一个EditText获取了焦点,显示第一个EditText)

    图二:第二条获取焦点显示软键盘(最后一个EditText获取了焦点,显示最后一个EditText)

                 

               

    8、adjustResize

    调整大小状态,这个属性表示Activity的主窗口总是会被调整大小来保证软键盘的显示空间。如果界面中有可滑动控件,显示效果跟adjustUnspecified显示效果一样;如果界面中没有可滑动控件,软键盘可能会盖住一些控件(布局的位置不会发生变化,可能获取了焦点的控件被软键盘盖住)。

    无滑动控件显示效果:

    图一:软键盘隐藏

    图二:第一条获取焦点软键盘显示

    图三:最后一条获取焦点软键盘显示

    二、三图显示效果一样,三图获取了焦点的EditText没有显示出来。

            

    9、adjustPan

    如果设置了这个属性,当软键盘弹出的时候,系统会通过布局的移动,来保证用户要进行输入的输入框在用户的视线范围内。如果界面没有可滑动控件,显示效果和adjustUnspecified效果一样;如果界面有可滑动控件,在软键盘显示的时候,可能会有一些内容显示不出来。

    有滑动控件显示效果:

    图一:软键盘隐藏

    图二:第一条获取焦点-滑动到顶部-软键盘显示

    图三:第一条获取焦点-滑动到底部-软键盘显示

    图四:最后一条获取焦点-滑动到顶部-软键盘显示

    图五:最后一条获取焦点-滑动到底部-软键盘显示

    如果获取的焦点在页面上位置偏上,底部的一些内容可能显示不出来,被软键盘遮挡;如果获取的焦点在页面上位置偏下,顶部的一些内容可能显示不出来,被软键盘顶出屏幕。

              

           

    通过上边的实验,可以得出结论,如果我们不设置"adjust..."属性,对于没有滚动控件的布局来说,采用的是adjustPan方式;对于有滚动控件的布局来说,采用的是adjustResize方式。

     
    ---------------------
    作者:RXLH929903
    来源:CSDN
    原文:https://blog.csdn.net/qiutiandepaomo/article/details/84028558
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    EggJs+Vue服务端渲染实践
    使用Charles代理功能将网络请求定向至本地文件
    iOS内存管理(一)
    RumTime实践之--UITableView和UICollectionView缺省页的实现
    CollectionView水平和竖直瀑布流的实现
    解决在HTTPS页面里嵌套HTTP页面浏览器block的问题
    利用servlet做转发,实现js跨域解决同源问题
    js将数字转换成大写的人民币表达式
    《将博客搬至CSDN》 分类: 勉励自己 2014-09-05 14:29 43人阅读 评论(0) 收藏
    jquery插件,美化select标签
  • 原文地址:https://www.cnblogs.com/Jeely/p/11063841.html
Copyright © 2011-2022 走看看