Android 点击空白页关闭软键盘
2016-06-07 16:42
537 查看
思路 在Activity的onTouchEvent 方法中,获取点击的View,如果不是Edittext,隐藏软键盘。
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, event)) {
hideKeyboard(v.getWindowToken());
}
}
return super.onTouchEvent(event);
}
Base 里面统一处理即可
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, event)) {
hideKeyboard(v.getWindowToken());
}
}
return super.onTouchEvent(event);
}
/** * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 * * @param v * @param event * @return */ private boolean isShouldHideKeyboard(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] l = {0, 0}; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击EditText的事件,忽略它。 return false; } else { return true; } } // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager,隐藏软键盘 * @param token */ private void hideKeyboard(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } }
Base 里面统一处理即可
相关文章推荐
- Github Android Client
- 打包时Fragment需要注意的一些问题
- material-calendarview日历控件详解,使用方法
- Android Annotation框架初步实践
- Android原理揭秘之APk生成过程
- Android day7
- Android摄像头视频帧数据测试代码
- Android下pm 命令详解
- android 拼图游戏
- Android 高清加载巨图方案 拒绝压缩图片
- Method 'NewStringUTF' could not be resolved
- Android程序报错:Unable to add window——token android.os.BinderProxy@431e65b8 is not valid
- NotificationListenerService使用总结笔记
- The Import android.support.v7 cannot be resolved
- Android 基础总结:( 十八)Permission详解(上)
- [Android] 给 Linearlayout 添加边框
- Android动态加载进阶 代理Activity模式
- android出现注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注
- Android 沉浸式状态栏的实现方法、状态栏透明
- Android导出jar包和之后的资源使用问题