Android监听键盘的显示和隐藏
来源:互联网 发布:创意营销网站知乎 编辑:程序博客网 时间:2024/04/26 11:53
最近在做一个Android项目,在登陆窗口输入信息时,弹出软键盘,会覆盖Activity中的某些内容。为此,需要主动监听软键盘的状态,主动隐藏或者显示某些view,使界面看起来更友好。
关于软键盘的隐藏显示问题,http://winuxxan.blog.51cto.com/2779763/522810 这篇博客中讲得很不错,可以仔细的看看。不过文中“关于侦听软键盘的显示隐藏”部分所使用的方法,有点复杂,而且在activity是fullscreen或者notitlebar的情况下不适用。
查了很多资料,我在http://stackoverflow.com/questions/2150078/how-to-check-visibility-of-software-keyboard-in-android 中找到了一种相对来说比较简单的方法,贴一下代码:
loginlayout = (LinearLayout)findViewById(R.id.login_layout);logo = (ImageView)findViewById(R.id.logo);loginlayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){public void onGlobalLayout() {// TODO Auto-generated method stubRect r = new Rect();loginlayout.getWindowVisibleDisplayFrame(r);int heightDiff = loginlayout.getRootView().getHeight() - r.height();if(heightDiff > 100){//if more than 100 pixels, its probably a keyboard...logo.setVisibility(View.GONE);}else{logo.setVisibility(View.VISIBLE);}}});
简单解释一下上面的代码,loginlayout是activity的根view,在xml中给LinearLayout加了id。logo是我要控制显示或隐藏的view,当键盘显示的时候,logo隐藏,当键盘隐藏的时候,logo显示。
经过测试,上面的方法在notitilebar 以及fullscreen的情况下都是适用的,在有titlebar的情况下也适用。
- Android监听键盘的显示和隐藏
- Android监听键盘显示和隐藏
- Android监听键盘显示和隐藏
- android 键盘隐藏、显示的监听
- 监听键盘的显示和隐藏 通知
- android 监听键盘的弹起和隐藏
- android监听虚拟键盘隐藏和显示事件
- Android 键盘显示/隐藏监听事件
- android 监听键盘显示或者隐藏
- 监听iPad键盘显示和隐藏事件
- Android 输入法键盘的隐藏和显示
- Android 键盘的显示和隐藏
- Android edittext键盘的隐藏和显示
- android显示和隐藏键盘
- Android显示和隐藏键盘
- 键盘的显示和隐藏
- 监听键盘的弹出和隐藏
- Android监听系统输入法键盘弹出显示与隐藏事件
- 设置tomcat中的编码为utf-8
- 死索的java实现
- 虚函数
- myexclipse 创建并调用 webservice
- Android-自定义控件之组装控件(自定义导航)
- Android监听键盘的显示和隐藏
- malloc()和free()
- MVC3中的视图文件
- 虚函数与回调函数
- [图文]关于iOS如何制作Library
- Linux下的curses屏幕游戏编程
- How do I import routes from other XML files
- 十一、从头到尾彻底解析Hash表算法
- java实现RSA加密