Android 监听键盘弹出关闭
2015-08-24 15:51
756 查看
Android源生并不支持监听键盘的开关,一般我们都是通过监听Layout的变化来实现
效果:1.在Manifest文件中当前activity下面设置如下属性:
2.在键盘弹出时会改变大小的布局上设置监听
3.在监听方法中判断键盘是开启还是关闭状态.
int[] i2 = new int[2]; overscroll.getLocationInWindow(i2);//得到当前控件在屏幕中的位置 if(overscroll.getHeight()< maxHeight-10){ // 软键盘可见 hideAllExceptFocusView();//在软键盘显示时,隐藏除具有焦点外的View }else if((overscroll.getHeight()> maxHeight+10 || overscroll.getHeight() == maxHeight)&&i2[1] > top){//控件高度变大了,且向下移动了. // 软键盘隐藏 showAllView();//在软键盘隐藏时,显示所有View overscroll.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { overscroll.getViewTreeObserver().removeGlobalOnLayoutListener(this); View focus = overscroll.findFocus(); if(focus != null){ //软键盘关闭时,滚动到存在焦点的控件的位置 overscroll.scrollTo(overscroll.getScrollX(), ((View)focus.getParent()).getTop()+et_category.getHeight()); } } }); } maxHeight = overscroll.getHeight(); int[] i1 = new int[2]; overscroll.getLocationInWindow(i1); top = i1[1];//保存上一次顶部的位置(方便下次判断控件是被顶起还是落下)
相关文章推荐
- Android项目利用jinkens自动打包
- Android 打包签名(二)
- Android SurfaceView实战 带你玩转flabby bird (上)
- parseSdkContent failed Could not initialize class android.graphics.Typeface
- Android自定义ProgressDialog
- android中跨进程通讯的4种方式
- Android 打包签名(一)
- 关于Android最佳性能实践——高性能编码优化学习笔记
- Ubuntu 14.04配置Android编译环境
- Android ContentProvider使用样例
- Android自定义Dialog
- android 学习 广播机制的使用
- Android 自定义控件 优雅实现元素间的分割线 (支持3.0以下)
- Android平台aac谷歌软解框架和流程、解码库学习
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- Android时区及语言代码
- android: AAC文件解析
- Android欢迎界面的创建方法
- Android Job框架:Trigger
- Android ELF文件格式