태블릿 vs. 일반 : Soft Keyboard 동작의 차이 (짜증!!)
Android 태블릿을 이용하는 사용자는 많지 않다.
그래서, 아주 열심히 대응을 하고 있지는 않았다.
브런치 앱 기준으로만 봐도 수십만 download 중에 1천이 안되니 말이다. ㅠ.ㅠ
그렇지만, 글을 쓰는 작가라면 얘기가 달라진다.
태블릿을 가로 또는 세로로 세워놓고 블루투스 키보드를 연결하여 글을 쓰는 분들이 있기 때문이다.
작가들을 위한 앱이 이것을 지원해야 하는 것은 당연한 듯 보인다.
그래서 제가 한 번 적용해봤습니다.
우선 AndroidManifest.xml를 수정한다.
그동안 세로 고정이었던 것을 풀어놓는다.
android:screenOrientation="portrait" 제거
대신에 configChanges 에 회전과 키보드 변경 감지 옵션을 추가한다.
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
이제 Activity에서 회전과 블루투스 키보드 연결을 확인한다.
다음과 같이 세 가지 변수를 선언했다.
굳이 태블릿인가?를 넣은 이유는 가로모드 지원은 오직 태블릿만 지원하기 위해서이다.
onCreate()에서 초기화를 한다.
이제 onConfigurationChanged()를 구현해서 변화를 감지한다.
위 코드처럼 하면 된다. 뭔가 겁나게 쉬운 것 같지 않은가?
맞다. 겁나 쉽다. ㅠ.ㅠ
그런데, 여기서 좀 이상한 게 있다.
7인치 이상의 태블릿에서는 블루투스 키보드가 연결되었을 때, 화면에 Soft KeyPad 가 안 뜬다!!
삽질의 시작이다. ㅠ.ㅠ
이 그림은 에디터 화면이다.
여기서 [사진첨부].[기타첨부].[글자스타일].[정렬] 버튼들이 있는 View는 Soft KeyPad가 올라오면 그 위로 올라오게 되는 View이다.
무슨 말인고 하니, Manifest에서 정의한 대로 android:windowSoftInputMode="adjustResize" 이므로 화면 사이즈가 조정되어 알아서 잘 올라오게 된다.
오른쪽 그림처럼 [글자스타일] 버튼을 눌렀을 때는, WindowManager를 이용해서 스타일을 변경할 수 있는 View로 Soft KeyPad를 덮는다.
그런데, 태블릿은 Soft KeyPad가 안 올라오니, 4개의 버튼이 있는 View가 안 보이게 되는 거다. ㅠ.ㅠ
어쩔 수 없이 꼼수를 썼다.
스타일 변경 View 에 4개의 버튼이 있는 View를 추가하고, 이것을 Visible과 Gone 처리를 했다.
onConfigurationChanged()에서 키보드가 연결되거나 해제될 때, 아래 그림처럼 처리했다.
이렇게 밖에 안 되는 것인지 답을 모르겠다.
지금으로서는 찾은 방법이 이것뿐이다. 해결방안이 있으면 좀 알려주시길 부탁드린다.
태블릿은 블루투스 키보드가 연결되었을 때, 소프트 키패드가 안 뜬다고 했다.
그러나, 이것도 안드로이드 설정에 가면 보이게 할 수 있다. ㅠ.ㅠ
그래서 ViewTreeObserver를 이용해서 소프트 키패드가 떴는지를 또 한 번 체크해야 했다.
아오 정말 짜증 난다.
참고
1. Manifest : Activity
https://developer.android.com/guide/topics/manifest/activity-element.html
2. Configuration
https://developer.android.com/reference/android/content/res/Configuration.html