EditText失去焦点时,键盘收起的布局
来源:互联网 发布:新网域名登陆 编辑:程序博客网 时间:2024/05/18 02:42
最近做项目要求实现当点击edittext之外的view时,键盘收起的功能。google了一大堆,也没有什么思路,无奈自己写了一个。
实现原理很简单:
1.dispatchTouchEvent中获取点击事件坐标
2.根据坐标找到子view,判断子view,
a.为空说明点击了空白处,收起键盘
b.不为空,判断view是不是edittext,如果不是,收起键盘
代码:
public class EditFocusLayout extends LinearLayout { private final static String TAG = "EditFocusLayout"; private Context mContext; public EditFocusLayout(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } @Override public boolean dispatchTouchEvent(MotionEvent ev) { int x = (int) ev.getX(); int y = (int) ev.getY(); if (ev.getAction() == MotionEvent.ACTION_DOWN) { View targetView = getTouchTargetView(this, x, y); InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); if (targetView == null) {//为空直接收起键盘 imm.hideSoftInputFromWindow(this.getWindowToken(), 0); } else if (!(targetView instanceof EditText)){//不为edittext也收起键盘 imm.hideSoftInputFromWindow(targetView.getWindowToken(), 0); } } return super.dispatchTouchEvent(ev); } /** * 获取点击到的view * @param viewGroup * @param x * @param y * @return */ private View getTouchTargetView(ViewGroup viewGroup, int x, int y) { View touchView = null; for (int i = 0; i < viewGroup.getChildCount(); i ++) { View view = viewGroup.getChildAt(i); if (view instanceof ViewGroup) { View tempView = getTouchTargetView((ViewGroup) view, x, y); if (tempView != null) touchView = tempView; } else { if (isTouchPointInView(view, x, y)) touchView = view; } } return touchView; } private boolean isTouchPointInView(View view, int x, int y) { Rect rect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()); return rect.contains(x, y); }}
源码
0 0
- EditText失去焦点时,键盘收起的布局
- EditText失去焦点时收起软键盘
- 重写dispatchTouchEvent方法,实现EditText失去焦点后(点击其他地方)收起键盘的效果
- 点击除搜索框EditText外其他位置EditText失去焦点收起键盘
- EditText失去焦点,收起软键盘
- EditText失去焦点的监听
- listview内的edittext调出来键盘后,edittext失去焦点问题
- EditText的clearFocus() :让EditText失去焦点
- EditText的clearFocus() :让EditText失去焦点
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- AndroidのEditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Shader的学习方法总结
- java过滤Emoji表情
- SSL
- Node.js函数传递之基础HTTP请求
- 简单的短信验证
- EditText失去焦点时,键盘收起的布局
- Mysql 访问权限
- 22. ubuntu 16.04 LTS 安装mongodb 3.2.8
- 自动泊车辅助系统
- java中的byte运算
- Ant基本使用指南
- STM32自学笔记——看门狗
- 算法:查找
- OPENCV入门教程一:OPENCV的下载,安装与配置