实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏;
1、重写dispatchtouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘
@OverrIDe public boolean dispatchtouchEvent(MotionEvent ev) { //Finger touch screen event if (ev.getAction() == MotionEvent.ACTION_DOWN) { // get current focus,Generally it is EditText VIEw vIEw = getCurrentFocus(); if (isShouldHIDeSoftKeyBoard(vIEw,ev)) { hIDeSoftKeyBoard(vIEw.getwindowToken()); } } return super.dispatchtouchEvent(ev); }
2、isShouldHIDeinput()方法;
/** * Judge what situation hIDe the soft keyboard,click EditText vIEw should show soft keyboard * @param v IncIDent event * @param event * @return */ private boolean isShouldHIDeSoftKeyBoard(VIEw vIEw,MotionEvent event) { if (vIEw != null && (vIEw instanceof EditText)) { int[] l = { 0,0 }; vIEw.getLocationInWindow(l); int left = l[0],top = l[1],bottom = top +vIEw.getHeight(),right = left + vIEw.getWIDth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // If click the EditText event,ignore it return false; } else { return true; } } // if the focus is EditText,ignore it; return false; }
3、hIDeSoftKeyBoard()方法;
/** * hIDe soft keyboard * @param token */ private voID hIDeSoftKeyBoard(IBinder token) { if (token != null) { inputMethodManager im = (inputMethodManager) getSystemService(Context.input_METHOD_SERVICE); im.hIDeSoftinputFromWindow(token,inputMethodManager.HIDE_NOT_ALWAYS); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!
总结以上是内存溢出为你收集整理的Android中点击隐藏软键盘最佳方法全部内容,希望文章能够帮你解决Android中点击隐藏软键盘最佳方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)