Kotlin 点击空白位置隐藏软键盘
- 如下操作
-
-
- ① 实现点击空白处,软键盘消失事件
- ② 根据EditText所在坐标和用户点击的坐标相对比,做判断是否需要隐藏键盘,因为当用户点击EditText时没必要隐藏
- ③ 隐藏软件盘方法的其中一种
如下操作
整体来讲还是相对简单,直接复制一下代码 粘贴到你需要的类里。
-
① 实现点击空白处,软键盘消失事件
override fun dispatchTouchEvent(motionEvent: MotionEvent): Boolean { if (motionEvent.action == MotionEvent.ACTION_DOWN) { // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点) val v = currentFocus if (isShouldHideInput(v, motionEvent)) { hideSoftInput(v!!.windowToken) } } return super.dispatchTouchEvent(motionEvent) }
-
② 根据EditText所在坐标和用户点击的坐标相对比,做判断是否需要隐藏键盘,因为当用户点击EditText时没必要隐藏
-
private fun isShouldHideInput(v: View?, event: MotionEvent): Boolean { if (v != null && v is EditText) { val l = intArrayOf(0, 0) v.getLocationInWindow(l) val left = l[0] val top = l[1] val bottom = top + v.getHeight() val right = (left + v.getWidth()) return !(event.x > left && event.x < right && event.y > top && event.y < bottom) } /**如果焦点不是EditText就忽略掉, * 因为这个发生在视图刚绘制完, * 第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点 */ return false }
③ 隐藏软件盘方法的其中一种
-
private fun hideSoftInput(token: IBinder?) { if (token != null) { val im: InputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager im.hideSoftInputFromWindow( token, InputMethodManager.HIDE_NOT_ALWAYS ) } }
所以,就搞定了!
-