Activity 내에서 EditText를 추가 해야할 경우가 많다.
매번 키패드가 올라왔을 때 화면이 어떻게 보여지는지를 항상 고려해야만 한다.
대표적으로 adjustPan, adjustResize 방식이 있다.
(이 속성들은 manifest.xml 에서 activity 에 정의 또는 직접 소스로 설정한다)
보통 adjustResize 방식을 많이 사용한다.
카카오톡 대화창 같은 방식이다. 화면 자체를 그대로 사용하면서 키패드를 활성화한다.
하지만 이번에 개발할 우리 캘린더 앱의 경우, adjustResize 를 사용하지 않는다.
왜냐???
위 스크린샷처럼 Status bar 를 투명화해주는 속성인 windowTranslucentStatus 를 이용하기 때문이다.
안드로이드의 신종 버그일까
이 속성을 사용하면 adjustResize가 먹질 않는다.
키패드는 보여지는데 중요한 EditText가 키패드에 가려져버리는 아주 안타까운 상황이 연출된다.
이 문제를 해결하려면 상당한 시간이 걸릴거라고 내 나름대로의 추측 결과,
그냥 adjustPan을 사용하기로 했다.
무난하게 넘어갈줄 알았더만
아래와 같은 문제점이 발생했다.
EditText 부분의 일부가 키패드에 의해 잘린채로 표시되기 때문이다.
adjustPan 은 EditText 의 커서 포커스에 맞춰서 화면조정이 되도록 구현되었나보다.
깜빡거리는 커서에 딱 맞게 화면이 조정되었다.
기능상은 문제없지만 UI상 굉장히 보기싫은 모양이므로 반드시 고쳐야만 한다!!
이 문제를 해결하기 위해서는
EditText 자체에 Padding을 주는 방식이 있다.
EditText 를 감싸는 상위 Layout 의 Height 를 주는게 아니라
Layout의 Height 를 WRAP_CONTENT 로 설정한 후, EditText 의 Padding을 입력한다.
여기서는 아래 부분이 잘리므로 PaddingBottom에 적정한 수치를 입력한다.
완벽하게 적용됐다.
아주 깔끔하다.
EditText 영역의 Height 의 정확한 값을 주지못하는 단점이 있으나, 잘리는 것보단 훨씬 낫다.
adjustPan 설정 시, EditText 가 잘릴 경우 EditText의 PaddingBottom 값을 설정하라.
'Programming > Android' 카테고리의 다른 글
Android Studio에서 나만의 Library 만들어보기 (7) | 2015.12.10 |
---|---|
안드로이드 Layout에 gradient로 그림자효과 주기 (Layout Shadow gradient) (0) | 2015.08.06 |
AppWidgetProvider 에서 onEnabled, onDisabled 가 호출되지 않을 때 (0) | 2015.05.20 |
안드로이드 스튜디오(Android Studio) 설치하기 (0) | 2015.04.24 |
앱위젯(App Widget) Layout weight (0) | 2015.04.13 |
댓글