获取键盘是否出现以及收起键盘
2018-05-23 本文已影响18人
风___________
获取键盘是否出现
/**
* 获取键盘是否出现
* */
protected boolean isKeyBoardShow(){
//获取当前屏幕内容的高度
int screenHeight = getWindow().getDecorView().getHeight();
//获取View可见区域的bottom
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
return (screenHeight - rect.bottom - getSoftButtonsBarHeight()) != 0;
}
/**
* 底部虚拟按键栏的高度
* @return
*/
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private int getSoftButtonsBarHeight() {
DisplayMetrics metrics = new DisplayMetrics();
//这个方法获取可能不是真实屏幕的高度
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
//获取当前屏幕的真实高度
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight) {
return realHeight - usableHeight;
} else {
return 0;
}
}
收起键盘
/**
* 收起键盘
* */
protected void closeKeyboard(){
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),0);
}
应用场景
/** 页面左上角的返回按钮触发事件 */
protected void leftButtonAction(){
if (isKeyBoardShow()){
closeKeyboard();
return;
}
finish();
}