Android中点击隐藏软键盘最佳方法
实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏;
1、重写dispatchTouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘
@Override publicbooleandispatchTouchEvent(MotionEventev){ //Fingertouchscreenevent if(ev.getAction()==MotionEvent.ACTION_DOWN){ //getcurrentfocus,GenerallyitisEditText Viewview=getCurrentFocus(); if(isShouldHideSoftKeyBoard(view,ev)){ hideSoftKeyBoard(view.getWindowToken()); } } returnsuper.dispatchTouchEvent(ev); }
2、isShouldHideInput()方法;
/** *Judgewhatsituationhidethesoftkeyboard,clickEditTextviewshouldshowsoftkeyboard *@paramvIncidentevent *@paramevent *@return */ privatebooleanisShouldHideSoftKeyBoard(Viewview,MotionEventevent){ if(view!=null&&(viewinstanceofEditText)){ int[]l={0,0}; view.getLocationInWindow(l); intleft=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){ //IfclicktheEditTextevent,ignoreit returnfalse; }else{ returntrue; } } //ifthefocusisEditText,ignoreit; returnfalse; }
3、hideSoftKeyBoard()方法;
/** *hidesoftkeyboard *@paramtoken */ privatevoidhideSoftKeyBoard(IBindertoken){ if(token!=null){ InputMethodManagerim=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!