【回顾】Android软键盘

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 大小也不会改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值