欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 点击editview以外位置实现隐藏输入法

程序员文章站 2023-11-27 15:01:40
android 点击editview以外位置实现隐藏输入法          实现代码:...

android 点击editview以外位置实现隐藏输入法

         实现代码:

@override 
  public boolean dispatchtouchevent(motionevent ev) { 
    if (ev.getaction() == motionevent.action_down) { 
      view v = getactivity().getcurrentfocus(); 
      if (isshouldhideinput(v, ev)) { 
 
        inputmethodmanager imm = (inputmethodmanager) getactivity().getsystemservice(context.input_method_service); 
        if (imm != null) { 
          imm.hidesoftinputfromwindow(v.getwindowtoken(), 0); 
        } 
      } 
      return getactivity().dispatchtouchevent(ev); 
    } 
    // 必不可少,否则所有的组件都不会有touchevent了 
    if (getactivity().getwindow().superdispatchtouchevent(ev)) { 
      return true; 
    } 
    return getactivity().ontouchevent(ev); 
  } 
 
  public 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; 
  } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!