素材巴巴 > 程序开发 >

Android软键盘(三)自动弹出键盘的现象

程序开发 2023-09-03 21:48:09

Android中有一个现象,就是进入一个包含EditText的页面便会自动弹出键盘,特别讨厌。但是其实大家有没有发现,并不是只要包含了EditText的页面就会自动弹出键盘的。往日在做开发的时候,如果遇到这样的问题就会直接用网上的解决方法去解决,也考虑不了那么多了,但是我相信大家一定也会发现,同样是包含了EditText的页面,但有时会自动弹出键盘,有时却不会,今天我认真测试了一下各种情况,总结一下:

先来看一下到底是不是有EditText就会引起键盘自动弹出的这个谎言:


可以明确的看出,我们进入页面并不会弹出键盘,之后在我点击了EditText之后才会弹出键盘的。

那到底什么因素才会影响弹出键盘呢? 我尝试了一下,界面中加入Button,或者通过代码让EditText获取焦点,或者让给界面设置比较多的控件超出屏幕等,都不会引起键盘的自动弹出。

后来经过我测验:

只要布局中有ListView,ScrollView这种类似的可上下滑动控件,便会引起键盘的自动弹出,注意是上下滑动,不是左右滑动,HorizontalScrollView就不会引起键盘的自动弹出。

而且与这个可上下滚动控件内容是否超出屏幕也没有滚动,就算内容不够多,还不能滑动着呢,也会自动弹出键盘。

效果如下图(仅ListView的效果图,不过经我测试ScrollView拥有同样的效果):



可以看出,如我所说,在我没有经过各种测试的时候,我以为与系统有关,但是现在可以确定为页面内的其他控件的关系有关,网上对于这方面的资料越发的少,而且也没人提及到底什么时候回弹出键盘,被一大堆错误的“包含EditText的页面会自动弹出键盘”所误导。

而且我们也可以看出,布局被挤到上面了,因为最后一个数据item:49可以看到,并且在键盘之上,说明整个布局上移了。


至于为什么会是这样的,我本人翻了翻源码,也本没有找到答案,我觉得这应该和系统机制有关吧,可能会在framework层找到答案吧,以后找到了再来补充。



标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。