[TIP] Android EditText remove focus - 화면 클릭하여 키보드 숨기기

Notepad96

·

2022. 2. 6. 23:25

300x250

EditText 입력 중 화면 클릭하여 키보드 숨기고 EditText focus 제거하는 방법

 

 

결 과

 

 

 

// 화면 클릭하여 키보드 숨기기 및 포커스 제거
override fun dispatchTouchEvent(event: MotionEvent?): Boolean {
    if (event?.action === MotionEvent.ACTION_DOWN) {
        val v = currentFocus
        if (v is EditText) {
            val outRect = Rect()
            v.getGlobalVisibleRect(outRect)
            if (!outRect.contains(event.rawX.toInt(), event.rawY.toInt())) {
                v.clearFocus()
                val imm: InputMethodManager =
                    getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                imm.hideSoftInputFromWindow(v.getWindowToken(), 0)
            }
        }
    }
    return super.dispatchTouchEvent(event)
}

 

 

터치 이벤트를 사용하여 EditText의 포커스와 키보드를 숨긴다.

 

 

해당 Activity에서 dispatchTouchEvent라는 함수를 오버라이딩 한 후(Ctrl+O) 위 같은 코드를 작성해준다.

 

 

300x250