1, 页面根布局加 android :focusable= "true" android :focusableInTouchMode= "true"
2.在activity里面重写  dispatchTouchEvent @Override public 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 ; }

更多相关文章

  1. Android数据库组件Room
  2. 2010.12.19——— android 设置组件的高度
  3. UI组件之AdapterView及其子类(二)GridView网格视图的使用
  4. ReactNative 调用Android 原生(二)——原生组件
  5. android的四大组件及其生命周期

随机推荐

  1. IPFS指南:ipfs挖矿的常见问题,避坑指南
  2. 软件测试女孩可以不?
  3. kNN之改进约会网站配对效果(附源码)
  4. 2行代码实现小程序直接分享到微信朋友圈
  5. 前端工程师和后端工程师的区别?
  6. 在windows系统下安装linux虚拟机(VMware)
  7. 更改sqlplus命令提示符的样式
  8. Numpy
  9. Solaris10下安装Oracle11g
  10. WARNING swSocket_bind: bind(0.0.0.0:95