Android中softInputMode的集中类型

假设有三个Activity MainAcitivity,A和B,两个当中都有一个EditText。

stateHidden,stateAlwaysHidden
stateHidden对应SOFT_INPUT_STATE_HIDDEN:保证主动导航到A的时候,软键盘都是隐藏状态。
例如,从MainActivity进入A,此时一定是软键盘隐藏的状态,然后进入B,如果在B中弹出软键盘并保持,然后退出B返回至A,此时A的软键盘是弹出状态。
stateAlwaysHidden对应WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDEEN:还是stateHidden中的例子,不管主动导航还是返回至A中,A的软键盘一定是隐藏状态。
adjustUnspecified对应SOFT_INPUT_STATE_UNSPECIFIED:默认设置,通常由系统自行决定是隐藏还是显示。系统会根据界面选择不同的模式,如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容。

例如,对于下面的LinearLayout中都是EditText,如果没有ScrollView那么,布局会向上弹起,比如第6个EditText获取到焦点,那么软键盘会刚好顶起第6个EditText,在它之下的将会被覆盖,被顶出屏幕外的内容也无法看到。如果有ScrollView,虽然也是将第6个EditText顶起来,但是,此时整个布局是可以上下滚动的,保证可以将它之后的内容可见。
在这里插入图片描述

SOFT_INPUT_STATE_UNCHANGED
SOFT_INPUT_STATE_VISIBLE
SOFT_INPUT_STATE_ALWAYS_VISIBLE

adjustResize对应SOFT_INPUT_ADJUST_RESIZE:根据字面意思Resize,重新调整大小,即总是调整屏幕的大小以便留出软键盘的空间。
对于有滑动控件的布局来说,显示效果和默认adjustUnspecified是一样的
对于没有滑动控件的布局,默认属性时,整个布局是被顶上去,设置为adjustResize属性,布局的位置并没有发生什么变化,整个内容是不动的。

adjustPan对应SOFT_INPUT_ADJUST_PAN:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。
对于没有滚动控件的布局来说,这个其实就是默认的设置,如果我们选择的位置偏下,上面的标题栏和部分控件会被顶上去。

不设置"adjust…"的属性,对于没有滚动控件的布局来说,采用的是adjustPan方式,而对于有滚动控件的布局,则是采用的adjustResize方式.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值