EditText隐藏软键盘的方法 --可以通用设置
2020-03-11 本文已影响0人
勤劳的蚂蚁
点击edittext 之外的控件隐藏软键盘,否则不处理(默认弹起软键盘)参考
https://www.cnblogs.com/JwangC/p/7553080.html
Activity 中设置
// 获取点击事件
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if(ev.getAction() == MotionEvent.ACTION_DOWN) {
View view = getCurrentFocus();
if(isHideInput(view, ev)) {
HideSoftInput(view.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
// 判定是否需要隐藏
private boolean isHideInput(View v, MotionEvent ev) {
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(ev.getX() > left && ev.getX() < right && ev.getY() > top
&& ev.getY() < bottom) {//在EditText 范围内
return false;
}else {
return true;
}
}
return false;
}
// 隐藏软键盘
private void HideSoftInput(IBinder token) {
if(token != null) {
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
其他方法:
//直接关闭键盘输入法
private void closeInputMethod() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen = imm.isActive();
if (isOpen) {
// imm.toggleSoftInput(0,
// InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示
imm.hideSoftInputFromWindow(edt_pass.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}