标签:
一年多时间以来,一直在学习,去从来疏于整理,搞得知识点好凌乱,是时候开始做个总结啦,一步步来,从基础深入吧。
今天就讲解Android的软键盘windowSoftInputMode属性:其中有adjustXX共5个合stateXX共6个;加起来就是10个;
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:从字面意思来看就是没有指定,默认情况下使用这种方法来作交互,如果当前界面没有输入必要
(没有输入控件)或者说有输入控件但没有滚动控件的时间,软键盘就会不显示,如果两个条件都满足的话就显示
软键盘。
若有其他的看法或是更加准确的理解,请指点
标签:
原文地址:http://blog.csdn.net/u013791878/article/details/51170548