Android windowSoftInputMode属性解析

简介

android:windowSoftInputMode 是 Androidmanifest.xml 中 activity 的一个属性,例如

        <activity
            android:name=".ui.activity.main.QRVinActivity"
            android:configChanges="keyboardHidden|orientation"
            android:label="@string/app_name"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan|stateHidden" >
        </activity>

它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。各个值之间用|分开,例如

android:windowSoftInputMode="stateHidden|adjustResize"

作用

用于设置当前activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡的问题。

这个属性能影响两件事情:

  • 当有焦点产生时,软键盘是隐藏还是显示
  • 是否减少活动主窗口大小以便腾出空间放软键盘

可选值

windowSoftInputMode可选值有以下这些:

android:windowSoftInputMode=["stateUnspecified",
                             "stateUnchanged", 
                             "stateHidden",
                             "stateAlwaysHidden", 
                             "stateVisible",
                             "stateAlwaysVisible", 
                             "adjustUnspecified",
                             "adjustResize", 
                             "adjustPan"]

各值含义

  • stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

  • stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

  • stateHidden:用户选择activity时,软键盘总是被隐藏

  • stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

  • stateVisible:软键盘通常是可见的

  • stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态

  • adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示

  • adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间

  • adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分


一般来说,用的比较多的还是

android:windowSoftInputMode="stateHidden|adjustResize"

android:windowSoftInputMode="stateHidden|adjustPan"

这两对组合。

“adjustResize”在使用时布局会被软键盘顶上去,体验非常不好

“adjustPan”在使用时获取焦点的控件下边的View将会被软键盘覆盖

也就是说如果页面被键盘顶上去,可以设置 android:windowSoftInputMode=”stateHidden|adjustPan” 设置不被顶上去。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值