android 中的 windowSoftInputMode
android:windowSoftInputMode属性在Android应用中用于控制软键盘的显示和行为方式。该属性可以在AndroidManifest.xml文件中的对应Activity标签内进行配置。
以下是android:windowSoftInputMode属性的各个参数及其含义:
状态参数(state…)
- stateUnspecified:未指定状态。当没有设置android:windowSoftInputMode属性时,软件默认采用此交互方式。系统会根据界面采取相应的软键盘显示模式。
- stateUnchanged:状态不改变。当前界面的软键盘状态取决于上一个界面的软键盘状态。
- stateHidden:软键盘隐藏。设置此属性后,不管上个界面是什么状态,也不管当前界面有没有输入的需求,软键盘都不会显示。
- stateAlwaysHidden:软键盘始终隐藏。无论软键盘是否弹出,都隐藏软键盘。这通常用于全屏应用,或者当用户希望点击屏幕来手动显示软键盘时。
- stateVisible:软键盘显示。设置此属性后,会强制召唤出软键盘,即使在界面上没有输入框的情况下也会如此。
- stateAlwaysVisible:软键盘始终显示。无论软键盘是否弹出,都显示软键盘。这通常不常用,因为它可能会干扰用户与应用的正常交互。
调整参数(adjust…)
-
adjustUnspecified:未指定调整方式。这是软键盘与页面之间显示关系的未指定状态、默认设置状态。这种状态下,系统会根据界面选择不同的模式。
如果界面里有可滚动的控件(如RecyclerView、ScrollView等),系统会缩小可以滚动的界面的大小,以保证即使软键盘弹出了,也能够看到所有的控件。
如果界面里没有可滚动的控件,那么软键盘可能会盖住一些控件(布局的位置会发生变化,会让获取了焦点的控件显示出来,视情况隐藏可能会隐藏一些控件)。 -
adjustResize:调整窗口大小。表示Activity的主窗口总是会被调整大小,以保证软键盘的显示空间。
如果界面中有可滑动控件,显示效果与adjustUnspecified一样。
如果界面中没有可滑动控件,软键盘可能会盖住一些控件(布局的位置不会发生变化,可能获取了焦点的控件被软键盘盖住)。 -
adjustPan:调整窗口位置。当软键盘弹出时,系统会通过布局的移动,以保证用户要进行输入的输入框在用户的视线范围内。
如果界面没有可滑动控件,显示效果和adjustUnspecified效果一样。
如果界面有可滑动控件,在软键盘显示的时候,可能会有一些内容显示不出来。
组合参数
除了单独使用上述参数外,还可以使用“state…|adjust…”的形式进行组合设置,例如:
- adjustPan|stateAlwaysHidden:先调整窗口位置以使活动的内容不被软键盘遮挡,然后隐藏软键盘。
- adjustResize|stateAlwaysHidden:先调整窗口大小以适应软键盘,然后隐藏软键盘。
在实际开发中,可以根据具体需求选择合适的参数或参数组合来设置android:windowSoftInputMode属性,以确保软键盘的显示和行为方式符合应用的设计要求。同时,也需要注意不同的设备和输入法可能会有不同的行为表现,因此可能需要进行相应的调整和测试。
- 点赞
- 收藏
- 关注作者
评论(0)