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

跨入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())
	{
		// 隐藏键盘
		imm.hideSoftInputFromWindow(XXXActivity.this
			.getCurrentFocus().getWindowToken(), 0);
		return;
	}




你可能感兴趣的:(小小经验)