kotlin 实现点击输入框弹出软键盘、点击其他区域收起软键盘

当输入框输入完以后 实现点击其他区域收起软键盘
代码如下:
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位置
    v!!.getLocationInWindow(leftTop)
    val left = leftTop[0]
    val top = leftTop[1]
    val bottom = top + v!!.getHeight()
    val right = DisplayUtil.getScreenWidth(this)
    return if (event.x > left && event.x < right
    && event.y > top && event.y < bottom) {
    // 点击的是输入框区域,保留点击EditText的事件
    false
    } else {
    true
    }
    }
    else -> {
    return false
    }
    }
    }
    return false
    }
    记得在当前Activity的配置文件里面需要设置为:

android:windowSoftInputMode=“adjustResize”

你可能感兴趣的:(kotlin和ndk)