본문 바로가기
안드로이드 자바

[Android/안드로이드] 키보드 화면조정

by teamnova 2022. 12. 4.
728x90

안녕하세요. 오늘은 키보드를 레이아웃 화면에 맞춰 조정하는 방법을 알아보겠습니다.

 

키보드가 올라가면서 레이아웃 화면을 가리는 경우가 있습니다. 

예를 들어 채팅화면에서, 키보드가 올라오면서 가장 아래에 있는 채팅이 보이지 않는다면,

또는 댓글을 입력할 때, 내가 입력하고 있는 글씨가 보이지 않는다면? 

사용자 입장에서 불편하다고 느낄 것 입니다.

 

키보드 화면조정의 속성에는 다음 종류들이 있습니다.

 

  • Default(설정이 안 된 경우) : ajdustUnspecified와 stateUnspecified 적용됩니다.
  • adjustPan : 키보드가 올라올 때  UI화면도 같이 위로 올라갑니다.
  • adjustResize : 키보드가 올라갈 때 액티비티의 크기를 조정해줍니다.
  • adjustUnspecified : 시스템이 알아서 상황에 맞는 옵션을 설정해줍니다.
  • stateHidden : 액티비티를 실행했을 때 키보드가 자동으로 올라오는것을 방지합니다.
  • stateVisible : 액티비티를 실행하면 키보드가 자동으로 올라옵니다.
  • stateUnspecified : 시스템이 적절한 키보드 상태를 설정해줍니다.

 

이미지 출처 : https://lakue.tistory.com/55

 

위는 adjustPan을 적용한 것으로, 키보드가 올라갈 때 UI화면도 같이 올라가게 되는것을 확인할 수 있습니다.

안드로이드 manifest에서 해당 액티비티 태그에

<activity android:name=".MainActivity" android:windowSoftInputMode="adjustPan">

이렇게 추가해주세요.

 

이미지 출처 : https://lakue.tistory.com/55

 

위는 adjustResize로 키보드가 올라갈 때 액티비티는 고정되어있습니다. 하지만 너무 고정되어있는 탓에 입력할 수 있는 EditText가 보이지 않아 문제가 있습니다. 

<activity android:name=".MainActivity" android:windowSoftInputMode="adjustResize">

 

최상위 레이아웃을 RelativeLayout로 만들어 준 뒤, EditText를 바닥에 붙여주니 다음과 같이 키보드 위에 EditText가 붙는 것을 확인할 수 있습니다.

<EditText
	        android:id="@+id/editText"
	        android:layout_width="match_parent"
	        android:layout_height="wrap_content"
	        android:layout_alignParentBottom="true"
	        app:layout_constraintBottom_toBottomOf="parent" />