当输入框输入完以后 实现点击其他区域收起软键盘
代码如下:
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
if (ev!!.getAction() === MotionEvent.ACTION_DOWN) {
val v = currentFocus
if (isShouldHideInput(v, ev!!)) {//点击的是其他区域,则调用系统方法隐藏软键盘
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
if (imm != null) {
imm!!.hideSoftInputFromWindow(v!!.windowToken, 0)
}
}
return super.dispatchTouchEvent(ev)
}
// 必不可少,否则所有的组件都不会有TouchEvent了
return if (window.superDispatchTouchEvent(ev)) {
true
} else onTouchEvent(ev)
}
/**
- 判断是否是输入框区域
*/
fun isShouldHideInput(v: View?, event: MotionEvent): Boolean {
if (v != null) {
when (v.id) {
R.id.etEditContent -> {
val leftTop = intArrayOf(0, 0)
//获取输入框当前的location位置