본문 바로가기
반응형
Programming/Android

안드로이드 adjustPan EditText와 Keyboard 와의 간격문제 (Android keyboard cut EditText when adjustpan)

by JAMINS 2015. 8. 6.

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 값을 설정하라.





댓글