EditText失去焦点隐藏软键盘
2018-02-28 17:23
141 查看
1, 页面根布局加android:focusable="true"android:focusableInTouchMode="true"
2.在activity里面重写 dispatchTouchEvent@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (ViewUtil.isShouldHideInput( v, ev )) {InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent( ev );}// 必不可少,否则所有的组件都不会有TouchEvent了if (getWindow().superDispatchTouchEvent( ev )) {return true;}return onTouchEvent( ev );}
/*** 是否隐藏键盘* @param v* @param event* @return*/public static boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] leftTop = {0, 0};//获取输入框当前的location位置v.getLocationInWindow( leftTop );int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 点击的是输入框区域,保留点击EditText的事件return false;} else {return true;}}return false;}
2.在activity里面重写 dispatchTouchEvent@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (ViewUtil.isShouldHideInput( v, ev )) {InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}return super.dispatchTouchEvent( ev );}// 必不可少,否则所有的组件都不会有TouchEvent了if (getWindow().superDispatchTouchEvent( ev )) {return true;}return onTouchEvent( ev );}
/*** 是否隐藏键盘* @param v* @param event* @return*/public static boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] leftTop = {0, 0};//获取输入框当前的location位置v.getLocationInWindow( leftTop );int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 点击的是输入框区域,保留点击EditText的事件return false;} else {return true;}}return false;}
相关文章推荐
- EditText无法失去焦点、失去焦点隐藏软键盘
- Android点击EditText之外的地方隐藏软键盘同时使EditText失去焦点
- EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听
- android强制隐藏软键盘以及取消EditText的焦点
- Android EditText设置默认不弹出软键盘,点击EditText外部隐藏软键盘,EditText获取焦点时隐藏hint
- android软键盘的隐藏以及Edittext的焦点问题
- 显示软键盘ListView包含EditText失去焦点
- Android 中使 EditText 失去焦点,禁止弹出软键盘,及 弹出软键盘后 EditText 自动上移 不致被遮挡
- listview的edittext如何获得焦点,android 软键盘的显示与隐藏
- 简单使用技巧 隐藏键盘, 判断软键盘是否打开. edittext解决第二次点击获取焦点
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android EditText得到和失去焦点时,自定义处理内容
- Android - 隐藏EditText弹出的软键盘输入(SoftInput)
- Dialog 中有EditText时,打开自动弹出软键盘,关闭时隐藏软键盘
- Android 如何让EditText 失去焦点从而不弹出软键盘
- EditText失去焦点的监听
- Android--Android教程]EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- EditText焦点自动带出软键盘问题
- Android开发中EditText的点击Enter键焦点改变处理(获取焦点和失去焦点交互变化)
- Android - 小功能 - EditText设置/隐藏光标位置、选中文本和获取/清除焦点