方法一:使用android的分发机制(代码稍微有点多)

/***实现点击空白处,软键盘消失事件*@paramev*@return*/@OverridepublicbooleandispatchTouchEvent(MotionEventev){if(ev.getAction()==MotionEvent.ACTION_DOWN){//获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)Viewv=getCurrentFocus();if(isShouldHideInput(v,ev)){hideSoftInput(v.getWindowToken());}}returnsuper.dispatchTouchEvent(ev);}/***根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏**@paramv*@paramevent*@return*/privatebooleanisShouldHideInput(Viewv,MotionEventevent){if(v!=null&&(vinstanceofEditText)){int[]l={0,0};v.getLocationInWindow(l);intleft=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的事件,忽略它。returnfalse;}else{returntrue;}}//如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点returnfalse;}/***多种隐藏软件盘方法的其中一种**@paramtoken*/privatevoidhideSoftInput(IBindertoken){if(token!=null){InputMethodManagerim=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);im.hideSoftInputFromWindow(token,InputMethodManager.HIDE_NOT_ALWAYS);}}

2. 方法二,(代码量很小,但是有时会失效)

//首选定义变量, 点击空白键盘消失事件定义
private InputMethodManager manager;
//然后在onCreate中初始化
//点击空白键盘消失事件初始化
manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

/**
* 点击空白处,键盘消失事件
*
@param event
* @return
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (getCurrentFocus() != null
&& getCurrentFocus().getWindowToken() != null) {
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
return super.onTouchEvent(event);
}

更多相关文章

  1. Android平台开发-Android(安卓)keypad map-Android按键事件
  2. android popupwindow 弹出动画
  3. 关于Android(安卓)ListView组件中android:drawSelectorOnTop含义
  4. Android平台开发-Android(安卓)keypad map-Android按键事件
  5. 第一个android程序以及遇到问题解决办法
  6. TextView 设置背景【点击或获得焦点改变背景】
  7. Android(安卓)API 中文(76)——AdapterView.OnItemLongClickListen
  8. Android(安卓)系统服务 - Input 事件的分发过程
  9. Android为菜单添加事件

随机推荐

  1. Android(安卓)4.0 UI for Tablet and Han
  2. android ViewPager学习笔记1
  3. android自定义组件
  4. android中利用socket上传文件
  5. android Activity间List传值
  6. Android(安卓)10 Camera -- 3A Modes and
  7. 【Android】TabHost与RadioGroup结合完成
  8. android连接服务器下载文件工具类
  9. 如何获得Android的System Bar’s Height
  10. Android(安卓)刷新框架SmartRefreshLayou