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);
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!