본문 바로가기
Android

[안드로이드] EditText 다른 부분 누르면 키보드 내리기

by 워뇨옹2 2021. 9. 23.
728x90
반응형
    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        val focusView = currentFocus
        if (focusView != null) {
            val rect = Rect()
            focusView.getGlobalVisibleRect(rect)
            val x = ev?.x?.toInt()
            val y = ev?.y?.toInt()
            if (!rect.contains(x!!,y!!)) {
                val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
                imm.hideSoftInputFromWindow(focusView.windowToken, 0)
                focusView.clearFocus()
            }
        }
        return super.dispatchTouchEvent(ev)
    }

현재 focus가 들어간 view의 구간을 rect객체에 할당해줍니다.

 

그리고 ev로 들어온 touch event의 x, y 좌표가 rect의 구간에 포함되는지 확인한 뒤,

rect구간에 포함되지 않았다면 hideSoftInputFromWindow를 통해 자판을 내리고 현재 focus가 들어간 view에서

focus를 없애줍니다.

728x90
반응형