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

EditText 에 포커스가 된 후 키보드가 올라오는데 바깥 화면을 터치 시에도 키보드를 숨겨주고 싶었다.

📌 Manifest.xml

windowSoftInputMode 에 stateAlwaysHidden 속성을 추가해준다.
안드로이는 첫번째 EditText에 초기 포커스 자동적으로 할당하거나 Activity에 focusable을 할당하는데 이 속성을 추가하면 초기 포커스 설정이 무시된다.

adjustResize 는 키보드가 올라왔을 때 키보드를 위한 공간을 확보하도록 액티비티의 기본 창 크기를 항상 조절해준다.

💚 그외 설정값들은 이 링크 클릭 💚

        <activity
            android:name=".menu.main.LoginActivity"
            android:screenOrientation="sensorLandscape"
            android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />

📌 dispatchTouchEvent

Activity 의 터치 이벤트를 감지하는 dispatchTouchEvent 메소드를 오버라이드 해준다.

 // 화면 터치 시 키보드 내리기
    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        val imm: InputMethodManager =
            getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0)
       return super.dispatchTouchEvent(ev)
}

InputMethodManager 를 이용하여 현재 터치되어 포커스 된 뷰를 가져와서 키보드를 숨겨준다.

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글