1. android:windowSoftInputMode 를 이용해서 화면에서 키보드가 어떻게 나타날지 설정할 수 있다.
adjustNothing : 레이아웃에 영향을 주지 않고 키보드가 올라간다.
adjustPan : 소프트 키보드를 위한 공간을 확보하기 위해 액티비티의 기본 창의 크기를 조정하는 작업을 수행하지 않습니다.
그 대신에, 키보드가 현재 포커스를 가리지 않고 사용자가 입력하는 것을 항상 볼 수 있도록 해당 창의 콘텐츠가 자동으로 이동합니다.
이는 사용자가 창의 가려진 부분에 도달하여 상호작용하도록 소프트 키보드를 닫을 필요가 있을 수 있으므로
일반적으로 크기 조정보다 바람직하지 않습니다.
adjustResize : 화상 소프트 키보드를 위한 공간을 확보하도록 액티비티의 기본 창의 크기를 항상 조정합니다.
참고 : https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft
그러나 FullScreenMode 에서는 이러한 속성들이 제대로 적용되지 않아서 별도의 처리가 필요하다.(adjustNothing을 제외하고)
아래 링크의 AndroidBug5497Workaround 클래스를 구현하고 키보드를 호출하는 액티비티에서
AndroidBug5497Workaround.assistActivity(this);
를 호출하면 정상적으로 작동한다.
[해결을 위한 참고]
https://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible/19494006#19494006
http://hsol.tistory.com/914
그런데 여기에서 또 다른 문제가 발생했다.
키보드가 나타나서 화면이 밀려 올라갔다가 다시 나타나는 경우 상단바가 사라지는 현상이 발생한다.
StackOverFlow에서 동일한 문제가 발생하는 케이스를 발견하게 되었다.
https://stackoverflow.com/questions/7859492/title-bar-gets-hide-when-softkeyboard-pops-up
오랫동안 고민했었는데 매우 간단하게 상단에 사라지는 부분을 ScrollView를 감싸는 방법으로 해결할 수 있었다.
1 2 3 4 5 6 7 8 9 | <android.support.constraint.ConstraintLayout> ... <ScrollView> <LinearLayout> 상단바 영역 </LinearLayout> </ScrollView> ... </android.support.constraint.ConstraintLayout> |
2. 설정 화면을 구현하고 메시지 모드(가칭 : 시크릿 메시지)를 구현했다.
'End > #11 달과 별 그리고 술' 카테고리의 다른 글
[Android/달과 별 그리고 술] 미니게임 만들기, 버그 수정, Custom Dialog (0) | 2017.08.10 |
---|---|
[Android/달과 별 그리고 술] ColorPicker 만들기(SeekBar), 전광판 만들기 (0) | 2017.08.09 |
[Android/달과 별 그리고 술]개발 문서 #6 (0) | 2017.08.06 |
[Android/달과 별 그리고 술]개발 문서 #5 (1) | 2017.08.03 |
[Android/달과 별 그리고 술]개발 문서 #4 (0) | 2017.08.02 |
댓글