플레이콘솔에 올라온 키보드 관련 버그를 추적하다가
어떤 부분에서 버그가 나는지 대충 파악을 했다.
키보드를 세로 방향에서 쓸 거라는 생각에 가로방향 회전을 미처 고려하지 못한 탓이었다.
이에 대한 해결 방법은
onConfigurationChanged() 메소드를 오버라이드하여, 화면 회전 시 키보드를 닫고, 바뀐 화면에 최적화된 키보드를 띄워주면 되는 것이다.
그래서 처음엔
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onConfigurationChanged(newConfig: Configuration) {
onFinishInputView(finishingInput = true)
onStartInputView(info = lastInfo, restarting = true)
}
위와 같은 코드를 작성하면 되겠지 했지만, 생각보다 그렇게 간단한 작업이 아님을 알게 되었다.
onFinishInputView()를 이용해서 기존 키보드를 닫는 건 됐지만, onStartInputView()로 새로 키보드를 열어주는 동작이 실행되지 않았다.
이에 대해 다른 키보드는 어떤 식으로 진행되는지 살펴봤더니, 삼성의 기본 키보드는 onFinishInputView() 메소드만 실행하는 것 같았다.
지금까지 내가 설계한 레이아웃은 모두 세로방향에서 사용 시 최적화된 레이아웃이라 이에 대한 고민을 전혀 들어가지 않았다.
일단 개인적으로는 기기의 가로 길이(width)에 비례하여 그의 한 1/2 ~ 1/3 정도 높이로 키보드를 띄워주면 어떨까 싶은데..키보드는 팔과 손 전체를 유기적으로 사용하는 어플이라 에뮬레이터만으로 설계하기가 좀 까다롭다.