参考Android软键盘的隐藏显示研究

Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少?我们能否在应用程序中进行自定义的控制?

android定义了一个属性,名字为windowSoftInputMode, 用它可以让程序可以控制活动主窗口调整的方式。我们可以在AndroidManifet.xml中对Activity进行设置。

1.adjustResize压缩模式
AndroidManifest.xml的Activity设置属性:android:windowSoftInputMode = "adjustResize"

Android 软键盘 windowSoftInputMode_第1张图片 TextView在下方 Android 软键盘 windowSoftInputMode_第2张图片 TextView被顶到了软键盘上方

从调试结果我们可以看出,当我们点击文本框后,根布局调用了onMeasure,onSizeChanged和onLayout。 实际上,当设置为adjustResize后,软键盘弹出时,要对主窗口布局重新进行measure和layout,而在layout时,发现窗口的大小发生的变化,因此调用了onSizeChanged。

2.adjustPan平移模式
AndroidManifest.xml的属性进行更改:android: windowSoftInputMode = "adjustPan"

Android 软键盘 windowSoftInputMode_第3张图片 TextView被挡住了

从调试结果我们可以看出,系统也重新进行了measrue和layout,但是我们发现,layout过程中onSizeChanged并没有调用,这说明输入法弹出前后并没有改变原有布局的大小。

事实上,当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时,窗口就会进行平移。也就是说,该模式始终是保持输入框为可见。如下图,整个窗口,包括标题栏均被上移,以保证文本框可见。

Android 软键盘 windowSoftInputMode_第4张图片 输入框在最底部 Android 软键盘 windowSoftInputMode_第5张图片 自动将输入框上移,保证不被挡

更多相关文章

  1. 【Android】利用Java代码布局,按钮添加点击事件
  2. Android 开发之深入分析布局文件&又是“Hello World!”
  3. LayoutTransition 容器布局动画
  4. Android SDK工具:使用layoutopt进行布局优化
  5. Android软键盘的显示方式
  6. 源码分析android 系统framework(二)之view的布局加载流程
  7. Android Support库百分比布局
  8. Android 获取USB输入设备信息/区分虚拟键盘和外接键盘输入

随机推荐

  1. Android MPAndroidChart超漂亮图表框架
  2. Android(安卓)Studio 编译慢解决方法
  3. 总结的Android中surfaceView清屏的方式。
  4. android百度地图(二)之定位
  5. android.intent.action.MEDIA_MOUNTED广
  6. Android 内存泄漏检测之Profiler
  7. Android中的数据库——SQLite
  8. Android之开发BLE 详细步骤
  9. Android 微博登录
  10. 2011.06.03(2)——— android 1.6 launcher