이번 포스팅은 Android에서 키보드가 뷰 레이아웃에 영향 주지 않게 하는 방법에 대하여 알아보도록 하겠습니다.
화면에서 어떠한 정보를 입력하기 위해 우리는 소프트웨어 키보드가 화면 하단에서 상단으로 업로드가 되며 데이터를 입력할 수 있습니다.
이때 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들이 영향을 받게 되는 경우가 있습니다.
예를 들어 기존에 화면에 있던 레이아웃이 layout_weight로 구성이 되어 있다면 키보드가 위로 업로드되면서 기존에 화면에 있던 레이아웃들은 정한 layout_weight 값에 따라 화면이 조정이 됩니다.
하지만, 키보드가 업로드되면서 기존에 화면에 있던 레이아웃에 영향을 주지 않고 싶을 땐 어떻게 할까요?
바로 AndroidMenifest.xml에서 해당 Activity 정보에 windowsoftInputMode 설정을 재정의 해주면 됩니다.
# adjustNothing
<activity name = ".InputActivity" activity android: windowsoftInputMode = "adjustNothing" ...... /> |
위와 같이 adjustNothing을 설정해주면 '화면에서 어떠한 것도 조정하지 않는다'는 의미로 기존에 화면에 있던 레이아웃을 건들지 않고 키보드만 위로 업로드가 됩니다.
참고) 이와 반대로 적용을 하고 싶다면 adjust 속성으로 변경하시면 adjustNothing과 정반대로 작동을 합니다.
주의) adjustNothing 적용 시 키보드가 화면을 가릴 수 있습니다.
이 점은 적용시 주의해야 합니다. |
# adjustResize
<activity name = ".InputActivity" activity android: windowsoftInputMode = "adjustResize" ...... /> |
위와 같이 adjustResize을 설정해주면 '화면에서 키보드가 올라와도 EditText와 UI가 화면에 보이도록 Activity를 resize 한다.'라는 의미입니다.
따라서 스크롤이 적용되어 키보드가 가린 부분을 화면을 아래로 밀어 내리면서 사용자가 볼 수 있습니다.