//根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘
private boolean isShouldHideKeyboard(View v, MotionEvent event) {
if (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();
return !(event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom);
}
return false;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (isShouldHideKeyboard(v, ev)) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
return super.dispatchTouchEvent(ev);
}
Android点击EditText控件外部隐藏键盘
最新推荐文章于 2023-03-15 15:54:11 发布
本文介绍了一个关于Android应用中,通过计算EditText的位置与用户点击位置的关系,实现自动隐藏软键盘的实用方法。通过实例代码展示了如何在ACTION_DOWN事件中判断并调用InputMethodManager隐藏键盘。
摘要由CSDN通过智能技术生成