본문 바로가기
카테고리 없음

AndroidManifest windowSoftInputMode

by extrmk 2024. 11. 20.

Activity의 메인 window 가 *소프트키보드가 표시된 윈도우를 어떻게 표시할 것인지에 대한 설정

 

*소프트키보드 : PC 같은 물리키보드가 아닌 소프트웨어 표시 가상키보드

 

두 가지 효과

1. activity에 포커스될 때 소프트 키보드가 안보이거나 보이게 한다.

2. 소프트키보드가 윈도우의 부분을 덮을 때 activity의 메인윈도우가 소프트키보드를 보여주기 위해 작아지거나,  현재 포커스를 보여주게 한다.

 

반드시 하나의 값을 입력하거나 state 값 1개와 adjust 값 1개를 조합해서 사용해야한다.(vertical bar "|"로 분리)

예시

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

 

사용할 수 있는 값 목록

- state

"stateUnspecified" 소프트키보드의 보임여부를 지정하지 않는다. 시스템이 적절한 상태나 테마에 맞는 설정으로 표현한다.(기본 설정값)

 

"stateUnchanged" activity가 활성화될 때 소프트키보드의 이전 상태를 유지한다.

 

"stateHidden" 사용자가 activity를 선택했을 때 소프트키보드를 숨긴다.

 

"stateAlwaysHidden" activity의 메인윈도우가 input에 포커스될 때 소프트키보드는 항상 안보인다.

 

"stateVisible" 다른 activity로 이동할때가 아니라 activity를 사용자가 선택했을때 키보드는 보여진다.

 

"stateAlwaysVisible" input에 포커스되면 소프트키보드를 항상 보여준다.

 

- adjust

"adjustUnspecified" 어떻게 처리할지 지정하지 않음. 윈도우가 내용을 스크롤할 수 있는 레이아웃뷰를 가지고 있는지에 따라서 시스템이 자동으로 처리한다. 이러한 뷰가 있는 경우, 스크롤해서 윈도우의 모든 콘텐츠를 더 작은 영역 내에서 볼 수 있게 할 수 있다는 가정하에 윈도우는 크기가 조정된다. (기본 설정값)

 

"adjustResize"  activity의 main window 의 크기가 항상 변경된다.(소프트키보드가 화면에 표시되는 영역만큼)

 

"adjustPan" activity의 main window 의 크기가 변경되지 않는다.(소프트키보드가 화면에 표시되는 만큼). 대신, window의 내용이 가려지지 않고 유저가 입력하는 것을 볼 수 있도록 pan? 된다. 크기가 변경되지 않기 때문에 가려진 영역을 보기 위해서 소프트키보드를 닫아야 할 수도 있으므로 adjustResize 보다 좋지 않다.