点击 空白区域 隐藏 软键盘
2014-06-30 11:02
344 查看
网上找到的判断输入法是否显示的两种方法:
方法一:
方法二:
但测试后发现两者皆不可行(可能低版本有用吧)。后来找到一篇文章,是通过监听layout重绘算出自己的xml布局占用的高度来判断键盘是否显示隐藏的:
找到的文章:http://blog.csdn.net/yellowcath/article/details/8655920
上述方法经测试确实有用。但是这个依赖于windowSoftInputMode,如果软键盘弹出的时候界面进行重绘了,此方法是生效的,否则是无效的。我的设置是android:windowSoftInputMode="adjustResize",是会进行重绘的。
在特定的区域上面盖一个空的视图,给此视图设置onTouch事件:
方法一:
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.isActive();
方法二:
getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
但测试后发现两者皆不可行(可能低版本有用吧)。后来找到一篇文章,是通过监听layout重绘算出自己的xml布局占用的高度来判断键盘是否显示隐藏的:
找到的文章:http://blog.csdn.net/yellowcath/article/details/8655920
replyLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int heightDiff = replyLayout.getRootView().getHeight() - replyLayout.getHeight(); // 如果高度差超过100像素,就很有可能是有软键盘... if (heightDiff > 100) { isKeyboardShow = true; } else { isKeyboardShow = false; } } });
上述方法经测试确实有用。但是这个依赖于windowSoftInputMode,如果软键盘弹出的时候界面进行重绘了,此方法是生效的,否则是无效的。我的设置是android:windowSoftInputMode="adjustResize",是会进行重绘的。
在特定的区域上面盖一个空的视图,给此视图设置onTouch事件:
blankView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { if(isKeyboardShow) { //TODO hide keyboard return true; } } return false; } });
相关文章推荐
- iOS点击空白区域隐藏键盘
- ios点击键盘以外空白区域隐藏键盘
- IOS点击键盘以外空白区域隐藏键盘的4种常见写法
- ios 有scrollview的时候点击键盘以外空白区域隐藏键盘
- android 监听软键盘弹起和关闭状态与点击空白区域软键盘隐藏
- IOS 单指点击空白区域隐藏键盘(贴项目中的代码,未整理)UITapGestureRecognizer
- IOS(1) 点击空白区域隐藏(关闭)键盘
- android朋友圈监听键盘状态 点击空白区域隐藏键盘
- iOS点击键盘以外空白区域隐藏键盘的常见方法
- 安卓隐藏键盘与点击空白区域隐藏键盘
- Android点击空白区域,隐藏输入法软键盘
- Android中单击空白区域隐藏键盘
- Android中单击空白区域隐藏键盘
- js中点击空白区域时文本框与隐藏层的显示与影藏问题
- Android点击非编辑框区域键盘隐藏
- Android中点击空白区域控件自动隐藏(事件传递机制中的一个小例子)
- 点击空白隐藏键盘
- 点击空白隐藏键盘
- Android 中单击空白区域隐藏键盘
- 点击键盘外面的区域隐藏键盘