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
반응형
'Android' 카테고리의 다른 글
| [Android/Mac] Mac에서 안드로이드 스튜디오 설치하기 (0) | 2021.10.09 |
|---|---|
| [Android] DataBinding(ViewBinding) 적용법 (0) | 2021.10.09 |
| [안드로이드] 이미지뷰 흑백으로 만들기 (0) | 2021.09.24 |
| [안드로이드] 폴더 생성 시 숨김 폴더로 설정하는 법 (0) | 2021.09.22 |
| [안드로이드] 외부저장소DCIM 경로 가져오기 및 파일 생성 (0) | 2021.09.22 |