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

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


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

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

后来经过我测验:

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

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

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



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

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


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


更多相关文章

  1. Android(安卓)ListView滚动到底后自动加载数据
  2. (转)Android中ListView分页加载数据
  3. Android(安卓)Spinner控件
  4. Android(安卓)仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应
  5. Android学习笔记之界面控件大小dip及布局管理器嵌套使用
  6. Android中ListView如何分页加载数据
  7. Android自定义控件(一)——抽奖刮刮乐的实现
  8. android中如何让一个不知道高度的控件正好恰在上下两个控件之中
  9. Android自定义标签列表控件LabelsView解析

随机推荐

  1. Android(安卓)gallery实现二级联动效果
  2. Android之Hello WebView
  3. Android(安卓)VelocityTracker
  4. Linux(ubuntu 11.04)环境下Android开发环境
  5. 获取Android(安卓)IP信息
  6. Android(安卓)NDK: jni/Android.mk: Cann
  7. 天气预报(二)
  8. android 更新失败
  9. Android(安卓)高仿知乎日报 (上)
  10. Android(安卓)Intent的几个主要用法