본문 바로가기
안드로이드 코틀린

[Android/Kotlin] 외부 화면 터치 시 키보드 숨기기

by teamnova 2023. 11. 3.

EditText 에 포커스가 된 이후에 키보드가 올라와 있는데 잘못 터치했거나 할때 키보드 밖 화면을 터치하는것으로 키보드를 숨기는 동작을 해주고 싶은 경우가 있습니다. 

 

해당하는 기능이 기본적인 동작이 아니라서 확인을 누르거나 뒤로가기를 눌러야 키보드를 내릴 수 있습니다. 

오늘은 키보드외부를 터치할 시 키보드가 숩겨지는 코드를 구현해 보겠습니다. 

 

구현은 간단합니다.

 

우선 다음과 같은 함수를 작성해 줍니다. 

fun hideKeyboard() {
    val currentFocusView = currentFocus
    if (currentFocusView != null) {
        val inputManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        inputManager.hideSoftInputFromWindow(
            currentFocusView.windowToken,
            InputMethodManager.HIDE_NOT_ALWAYS
        )
    }
}

 

이후 해당함수를 사용할 레이아웃 TouchListener 에 포함시켜  레이아웃 터치 시 실행될 수 있도록 해주면 간단하게 구현할 수 있습니다.

 

binding.layout.setOnTouchListener(OnTouchListener { v, event ->
    hideKeyboard()
    false
})