您的位置:首页 > 产品设计 > UI/UE

Android 软键盘的显示与隐藏(isActive一直为true的情况)

2015-04-27 14:36 253 查看
跨入IT行业1年半时间,从事android开发半年时间,中间也遇到过一些问题,但是都没有记录下来,这次遇到的问题,花了我整整一天的时间(本人菜鸟,请原谅),所以特此记录下来,以备查看

需求:界面上有EditText,Button,当点击按钮的时候如果软键盘是弹出来的,就隐藏,否则就执行其他操作

最开始度娘了一堆方式,有一篇Android 手动显示和隐藏软键盘写的很好,我也是用的这种方式但是问题来了,为什么我的imm.isActive()一直返回true

然后悲催的生活开始了,各种调试,各种改代码,各种度娘,最后还是没有找到解决方案,中午休息睡了一小下,醒了之后继续弄,然后又单独写了个测试Activity,最后发现在onClick事件里的isActive就始终为true(不知道是不是我测试有问题),快要崩溃了,怎么办,怎么办

突然看到键盘弹出的时候,我的View好像被顶上去了,对,被顶上去了,咦?被顶上去,那我的View的高度会不会变化呢?如果会变化,我可以用这个高度来判断键盘弹出来了吗?对,赶紧试试,哈哈哈哈,我狂笑,居然可以哦

// mHeight是contentView初始化完成的高度,contentView.getHeight()是键盘弹出后取的的高
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (mHeight > contentView.getHeight())
<span style="white-space:pre">	</span>{
// 隐藏键盘
imm.hideSoftInputFromWindow(XXXActivity.this
.getCurrentFocus().getWindowToken(), 0);
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android开发