Android基础总结--软键盘windowSoftInputMode

一年多时间以来,一直在学习,去从来疏于整理,搞得知识点好凌乱,是时候开始做个总结啦,一步步来,从基础深入吧。

今天就讲解Android的软键盘windowSoftInputMode属性:其中有adjustXX共5个合stateXX共6个;加起来就是10个;

20160520对于前些日子里说到的(使用纵向滑动会对键盘显示模式的影响其实错了,由于经验的不在再次做出修改,

其实是有可滑动控件就会对键盘显示模式造成影响

adjustXX这一系列的属性在测试中发现是通过调整窗体/窗体里面的某些属性来显示软件盘的。注意:这一系列模式只在

有输入必要的时候才会弹出软键盘

adjustResize:activity总是会被调整大小,来确保软键盘可以显示出来,并且不一定关心当前焦点

和输入内容是否可见,activity被打开的时候会默认第一个EditText获得焦点,弹出键盘;其中:

1、当前activity没有使用滑动的控时候,如果获取焦点的EditText在软键盘弹出可以覆盖的地方时候,当前activity

会把调整大小留出足够软键盘显示的空间,然而当前焦点和输入内容是无法看到的,如图:

 

看到了吧第9葛EditText得高度都被调整,压缩了。

2、当前activity拥有使用滑动的控时候,如果获取焦点的EditText在软键盘弹出可以覆盖的地方时候,当前activity

但会调整大小留出空间显示软键盘,并且当前的焦点和输入内容是可见的,如图:


adjustPan:当前activity不是通过调整activity大小来确保软键盘的显示,而是通过调整布局确保获得焦点和输入内容是可见的,

打开activity的时候默认第一个edittext获得焦点,但是软键盘不会自动打开;

1、当没有纵向滚动布局的时候,会把当前焦点以上的布局顶上去,来确保焦点可见;

2、当用有纵向滚动布局的时候,会把当前焦点以上的布局顶上去,并且有时可以通过滑动来看到上面的布局有时可以通过滑动来看到

焦点一下的布局(这是我用小米测试的效果);

如图:第一个没有滚动布局,第二,三个有滚动布局(第二张是可以向上滑,第三张可以向下滑)

     

adjustUnspecified:软键盘的默认模式,从字面意思来看是不指定显示和隐藏模式,在这种情况下activity会根据

不同的情况来选择软键盘的显示模式;

1、当没有滑动控件的时候,activity软键盘的显示选择adjustPan模式,在没有纵向滚动控件的时候软键盘的显示方式和

adjustPan的情况(1)没有滚动控件时候是一样的把布局顶上去,不会弹出软件盘;

2、当有纵向滚动控件时候,activity软键盘的显示选择adjustResize模式,而且和adjustResize的情况(2)有滚动控件时候

是一样的,并且会弹出软件盘,注意的是在该情况下回弹出软件盘

adjustNothing:选择了这种模式的以后会发现,这个模式发现相当于或者说其实就是软键盘在布局上一层挡住了

布局不会改变布局的属性,并且软键盘无论是否有滚动的控件,当前activity都不关心焦点是否可见,也不会默认

弹出软件盘。

stateXX这一系列是通过改名状态来控制软件盘的显示隐藏的,注意:这个系列的模式是关系当前焦点可见的,也就是说

软键盘弹出来的时候,不会遮挡焦点

stateHidden:顾名思义就是隐藏软件软键盘,而且不管上个界面是否有打开软件软件,在当前界面打开的

时候也是会把软键盘隐藏起来的,并且

stateAlwaysHidden:任何情况下都会隐藏软键盘,实话说这个真没看出和stateHidden有什么不一样,希望

有高人指点一下

stateVisible:这个模式不管什么情况对话强行弹出软件盘,不管是否有输入框,作用仅在当前界面,如下图:


stateAlwaysVisible这个模式不管什么情况对话强行弹出软件盘,不管是否有输入框,而且如果跳转到下个界面

的时候,下个界面没有输入框,软键盘也不会消失,也就是说它的作用不仅仅在当前页面的

stateUnchanged:这个模式就是对软键盘的状态不做改变,如果在上一个/下一个界面中软件是什么状态,到了当前

界面仍然保留过去的界面的软键盘状态,隐藏的继续隐藏,显示的继续显示

stateUnspecified:从字面意思来看就是没有指定,默认情况下使用这种方法来作交互,如果当前界面没有输入必要

(没有输入控件)或者说有输入控件但没有滚动控件的时间,软键盘就会不显示,如果两个条件都满足的话就显示

软键盘。

若有其他的看法或是更加准确的理解,请指点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值