android 点击空白退出,Android 点击空白处隐藏键盘
方法一:使用android的分發機制(代碼稍微有點多)
/**
*?實現點擊空白處,軟鍵盤消失事件
*?@param?ev
*?@return
*/
@Override
public?boolean?dispatchTouchEvent(MotionEvent?ev)?{
if?(ev.getAction()?==?MotionEvent.ACTION_DOWN)?{
//?獲得當前得到焦點的View,一般情況下就是EditText(特殊情況就是軌跡求或者實體案件會移動焦點)
View?v?=?getCurrentFocus();
if?(isShouldHideInput(v,?ev))?{
hideSoftInput(v.getWindowToken());
}
}
return?super.dispatchTouchEvent(ev);
}
/**
*?根據EditText所在坐標和用戶點擊的坐標相對比,來判斷是否隱藏鍵盤,因為當用戶點擊EditText時沒必要隱藏
*
*?@param?v
*?@param?event
*?@return
*/
private?boolean?isShouldHideInput(View?v,?MotionEvent?event)?{
if?(v?!=?null?&&?(v?instanceof?EditText))?{
int[]?l?=?{?0,?0?};
v.getLocationInWindow(l);
int?left?=?l[0],?top?=?l[1],?bottom?=?top?+?v.getHeight(),?right?=?left
+?v.getWidth();
if?(event.getX()?>?left?&&?event.getX()?
&&?event.getY()?>?top?&&?event.getY()?
//?點擊EditText的事件,忽略它。
return?false;
}?else?{
return?true;
}
}
//?如果焦點不是EditText則忽略,這個發生在視圖剛繪制完,第一個焦點不在EditView上,和用戶用軌跡球選擇其他的焦點
return?false;
}
/**
*?多種隱藏軟件盤方法的其中一種
*
*?@param?token
*/
private?void?hideSoftInput(IBinder?token)?{
if?(token?!=?null)?{
InputMethodManager?im?=?(InputMethodManager)?getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
2. 方法二,(代碼量很小,但是有時會失效)
//首選定義變量, 點擊空白鍵盤消失事件定義
private InputMethodManager manager;
//然后在onCreate中初始化
//點擊空白鍵盤消失事件初始化
manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
/**
* 點擊空白處,鍵盤消失事件
*@paramevent*@return*/@Overridepublic booleanonTouchEvent(MotionEvent event) {
//TODO Auto-generated method stubif(event.getAction() == MotionEvent.ACTION_DOWN) {
if(getCurrentFocus() != null&& getCurrentFocus().getWindowToken() != null) {
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);}
}
return super.onTouchEvent(event);}
原文:http://my.oschina.net/mzzyk/blog/494666
總結
以上是生活随笔為你收集整理的android 点击空白退出,Android 点击空白处隐藏键盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android sqlite 示例,an
- 下一篇: 【OpenCV 例程200篇】91. 高