实现功能:点击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); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持移动技术网!
如对本文有疑问, 点击进行留言回复!!
Codeforces C. A Cookie for You (模拟 / 分类 / 贪心) (Round #654 Div.2)
DialogFragment弹窗(带黑色透明背景和不带黑色透明背景)
网友评论