Android软键盘(三)自动弹出键盘的现象
Android中有一个现象,就是进入一个包含EditText的页面便会自动弹出键盘,特别讨厌。但是其实大家有没有发现,并不是只要包含了EditText的页面就会自动弹出键盘的。往日在做开发的时候,如果遇到这样的问题就会直接用网上的解决方法去解决,也考虑不了那么多了,但是我相信大家一定也会发现,同样是包含了EditText的页面,但有时会自动弹出键盘,有时却不会,今天我认真测试了一下各种情况,总结一下:
先来看一下到底是不是有EditText就会引起键盘自动弹出的这个谎言:
可以明确的看出,我们进入页面并不会弹出键盘,之后在我点击了EditText之后才会弹出键盘的。
那到底什么因素才会影响弹出键盘呢? 我尝试了一下,界面中加入Button,或者通过代码让EditText获取焦点,或者让给界面设置比较多的控件超出屏幕等,都不会引起键盘的自动弹出。
后来经过我测验:
只要布局中有ListView,ScrollView这种类似的可上下滑动控件,便会引起键盘的自动弹出,注意是上下滑动,不是左右滑动,HorizontalScrollView就不会引起键盘的自动弹出。
而且与这个可上下滚动控件内容是否超出屏幕也没有滚动,就算内容不够多,还不能滑动着呢,也会自动弹出键盘。
效果如下图(仅ListView的效果图,不过经我测试ScrollView拥有同样的效果):
可以看出,如我所说,在我没有经过各种测试的时候,我以为与系统有关,但是现在可以确定为页面内的其他控件的关系有关,网上对于这方面的资料越发的少,而且也没人提及到底什么时候回弹出键盘,被一大堆错误的“包含EditText的页面会自动弹出键盘”所误导。
而且我们也可以看出,布局被挤到上面了,因为最后一个数据item:49可以看到,并且在键盘之上,说明整个布局上移了。
至于为什么会是这样的,我本人翻了翻源码,也本没有找到答案,我觉得这应该和系统机制有关吧,可能会在framework层找到答案吧,以后找到了再来补充。
标签:
相关文章
-
无相关信息