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的情况下也适用。


原创粉丝点击