Android窗口软键盘调整的关键:windowSoftInputMode属性设置

当软键盘显示时,窗口会调整大小,以便为软键盘腾出空间。通常意味着窗口的内容会向上移动,以便为键盘腾出空间。DecorView大小不会改变,内容区contentView(id = android.R.content)会相应的缩小为键盘腾出空间。

当软键盘显示时,窗口会调整大小,以便为软键盘腾出空间。通常意味着窗口的内容会向上移动,以便为键盘腾出空间。DecorView大小不会改变,内容区contentView(id = android.R.content)会相应的缩小为键盘腾出空间。

windowSoftInputMode是 Android 中的一个属性,定义了当屏幕上有焦点且需要显示软键盘(即屏幕键盘)时,活动(Activity)窗口应该如何调整。属性位于AndroidManifest.xml文件中,针对每个<activity>标签进行设置。

<activity 
    android:name=".MainActivity"
    android:windowSoftInputMode="stateHidden|adjustResize">
</activity>

windowSoftInputMode有多个可能的值,可以分为两类:state前缀的值和adjust前缀的值。

  1. 「state 前缀的值」:

stateUnspecified:软键盘的默认状态由系统决定。

stateUnchanged:软键盘将保持上一次的状态,无论是可见还是隐藏。

stateHidden:当 Activity 被创建时,软键盘是隐藏的。

stateAlwaysHidden:软键盘总是隐藏的,即使用户选择了一个需要输入文本的字段。

stateVisible:当 Activity 被创建时,软键盘是可见的。

stateAlwaysVisible:软键盘总是可见的。

  1. 「adjust 前缀的值」:
  • adjustUnspecified:默认调整方式。系统的选择取决于屏幕大小和窗口是否可调整大小。

  • adjustResize:当软键盘显示时,窗口会调整大小,以便为软键盘腾出空间。这通常意味着窗口的内容会向上移动,以便为键盘腾出空间。

  • adjustPan:窗口内容不会调整大小,而是向上平移,以便当前获得焦点的字段不被键盘遮挡。

在AndroidManifest.xml设置:

<activity 
    android:name=".MainActivity"
    android:windowSoftInputMode="stateHidden|adjustResize">
</activity>

在代码中设置:

public class MainActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    }
}

这些值可以通过 "|" 符号分隔进行组合,在上面的代码中,stateHidden和adjustResize被组合在一起使用。

windowSoftInputMode常用的属性有adjustPan,adjustResize,adjustNothing

adjustPan

窗口内容不会调整大小,而是向上平移,以便当前获得焦点的字段不被键盘遮挡。Activity窗口(DecorView)大小不变。当获取到焦点的EditText位于屏幕下方,软键盘弹出会遮挡到EditText时,整个DecorView会往上移动,至于上移多少并不确定。一般是上移至使EditText刚好不被软键盘遮挡住为止。

图片图片

adjustResize

当软键盘显示时,窗口会调整大小,以便为软键盘腾出空间。通常意味着窗口的内容会向上移动,以便为键盘腾出空间。DecorView大小不会改变,内容区contentView(id = android.R.content)会相应的缩小为键盘腾出空间。

图片图片

注意:adjustResize只是调整contentView的大小,所以还是有可能覆盖掉EditText。

adjustNothing

Activity窗口不会做任何调整,contentView大小也不会改变。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2024年5月7日 00:07
下一篇 2024年5月7日 00:07

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信