Dart泛型类型是具体化的,这意味着它们在运行时携带类型信息。Java中的泛型使用了erasure,这意味着泛型类型参数在运行时被删除。在Java中,您可以测试对象是否为List,但不能测试对象是否为List List<String>。
android:windowSoftInputMode属性以下取值:
stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,stateVisible,stateAlwaysVisible;
adjustUnspecified,adjustResize,adjustPan,adjustNothing。
设置属性的时候,可以在这9个值里面选择一个,也可以用"state...|adjust"的形式进行设置。
1.stateUnspecified
中文意思是未指定状态,在没有设置android:windowSoftInputMode属性时,默认值,只有输入框获取焦点,会弹出。
2 stateUnchanged
不改变的意思,当前界面的软键盘状态,取决于上一个界面的软键盘状态,无论是隐藏还是显示。
3.stateHidden用户选择activity时,软键盘总是被隐藏
4.stateAlwaysHidden
当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
5.stateVisible
软键盘通常是可见的,即使在界面上没有输入框的情况下也可以强制召唤
6.stateAlwaysVisible:
用户选择activity时,软键盘总是显示的状态。
stateVisible与stateAlwaysVisible不同之处。
如果设置A界面为stateVisible属性,如果当前的A界面键盘是显示的,跳转到下个界面B的时候,软键盘会因为输入框失去焦点而隐藏,这是返回A界面,键盘这个时候是隐藏的。
如果设置A为stateAlwaysVisible,当前的A界面键盘是显示键盘,跳转到下个界面B,软键盘被隐藏的,这时候返回A界面,软键盘是会显示出来。
stateAlwaysVisible:不管什么情况到达当前界面(正常跳转或者是上一个界面被用户返回),软键盘都是显示状态。
以下几个 是页面显示内容和输入法软键盘位置关系:
7.adjustUnspecified
默认设置,通常由系统自行决定是隐藏还是显示。系统会根据界面选择不同的模式,如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容。
8.adjustResize
顾名思义,这种模式会自动调整大小。通过 hierarchy View 观察,decorView 大小本身并不会改变,但是我们的内容区 contentView (id = android.R.content) 会相应的缩小,为键盘的显示挪出空间。contentView 的下面为空白区域,软键盘就是覆盖在这个区域。
注意:adjustResize 只是调整 contentView 的大小,所以还是有可能覆盖掉 EditText。
adjustResize 最有用的是,这种模式可以轻松的获取到软键盘的高度,软键盘弹出后 contentView 高度变化的差值即为软键盘高度。
另外:这种模式可能会有个问题,当键盘消失时屏幕会出现一闪感觉有点难受。原因是键盘弹出时,键盘位置显示的是 windowBackground ,如果 windowBackground 为黑色而 Activity 背景为白色,当键盘消失时就会有闪动。解决办法是在 Activity 主题上添加一个 android:windowBackground 属性修改 windows 背景。
对于有滑动控件的布局来说,显示效果和默认adjustUnspecified是一样的
对于没有滑动控件的布局,默认属性时,整个布局是被顶上去,设置为adjustResize属性,布局的位置并没有发生什么变化。
9.adjustPan
Activity 窗口(DecorView) 大小不变。当获取到焦点的 EditText 位于屏幕下方,软键盘弹出会遮挡到 EditText 时,整个 DecorView 会往上移动,至于上移多少并不确定。
一般是上移至使 EditText 刚好不被软键盘遮挡住为止。这个属性用的比较多,常常配合 ScrollView 来使用。
对于没有滚动控件的布局来说,这个其实就是默认的设置,如果我们选择的位置偏下,上面的标题栏和部分控件会被顶上去。
不设置"adjust..."的属性,对于没有滚动控件的布局来说,采用的是adjustPan方式,而对于有滚动控件的布局,则是采用的adjustResize方式.
stateVisible与stateAlwaysVisible不同之处。stateAlwaysHidden与stateHidden类似,选择stateAlwaysHidden,always一直隐藏输入法。
10.adjustNothing
这种模式 Activity窗口不会做任何调整,contentView 大小也不会改变。