본문 바로가기
2023년 이전/Android

Ime hide catch

by JeongUPark 2020. 9. 25.
반응형

프로젝트를 할때 EditText에 포커스가 가서 Ime가 올라오고 back버튼을 눌려 Ime가 닫힐 때 화면도 변경 되길 원해서 하는 방법을 검토해 보았습니다.

 

1. onBackPressed

   처음에는 여기서 이벤트가 캐치 될줄 알았는데 전혀 되지 않았습니다. 아마 Ime가 떠 있을때는 back 이벤트가 아니라 다른 이벤트가 발생한듯 합니다.

2. 화면 크기

  가장 구글링에서 많이 본 방법입니다. Ime가 올라오면 화면이 축소되기 때문에 그를 체크하여 Ime의 노출 여부를 체크하는 방법 입니다.

3. CustomEditText

  CustomEditText를 만들고, 그 EditText 안에서 다음 onkeyPreIme를 override 합니다.

@SuppressLint("AppCompatCustomView")
class CustomEditText : EditText {
    constructor(context: Context?) : super(context)

    constructor(context: Context?, attrs: AttributeSet?) :super(context, attrs)

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    override fun onKeyPreIme(keyCode: Int, event: KeyEvent?): Boolean {

        return super.onKeyPreIme(keyCode, event)
    }

}

위의 onKeyPreIme는 Ime가 내려가면 호출이 됩니다.

 

 

반응형