본문 바로가기
End/#11 달과 별 그리고 술

[Android/달과 별 그리고 술]FullScreen SoftKeyboard 상태바 사라지는 버그 해결, android:windowSoftInputMode

by 퍼즐잎 2017. 8. 8.




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>

cs


2. 설정 화면을 구현하고 메시지 모드(가칭 : 시크릿 메시지)를 구현했다.



댓글