[android:windowSoftInputMode] soft keyboard 설정 옵션들

android 2013. 3. 12. 16:41

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

작성일 : 2013-03-12

작성자 : hanburn

 

 

1. android:windowSoftInputMode 이란?

Activity main window soft keyboard와 어떻게 interact 하는지 설정 할 수 있다.

설정할 수 있는 것은 2가지 이다.

 

첫째, 소프트키보드의 visible 상태를 설정

둘째, activity의 윈도우 조절 옵션 ( resize 하거나 pan 하거나 등등 )

 

아래에서는 state 계열과 adjust 계열의 속성으로 구분하였는데, 그 이유는.. 각 계열마다 하나의 속성만 정의 해야 한다. 만약 stat 계열의 속성을 복수로 지정하면 그 동작은 undefined 되어 있다고 한다. 복수로 지정할 수 있는 것은 stat 계열 1개와 adjust 계열 1개의 조합만 가능하다.

 

올바른 예

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

 

잘못된 예

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

위의 예처럼 state 계열은 visible 에 대한 것이므로 상반된 2개의 속성을 표시하면 안드로이드는 랜덤하게 동작하게 된다.

 

 

2. state 계열 속성

 

Value

Description

"stateUnspecified"

soft keyboard 보일지 말지 정하지 않고, system theme 따라서 선택하도록 한다. 설정이 기본 설정값이다.

"stateUnchanged"

soft keyboard 마지막 상태를 유지하도록 한다.

"stateHidden"

soft keyboard hidden 상태가 되게 한다. 다른 activity에서 back 버튼으로 활성화 되는경우보다 forward 활성화 되는 경우( 새로 activity 뜨는 경우)

"stateAlwaysHidden"

soft keyboard 항상 hidden 상태로 ( Activity main window foucus될때 )

"stateVisible"

soft keyboard visible 상태로 ( navigateing forward to )

"stateAlwaysVisible"

soft keyboard visible 상태로 ( 뒤로가기 제외 )

 stateHidden은 다른 액티비티에서 뒤로가기 버튼으로 navigation 되었을때는 동작을 않하게 된다. 반면에 stateAlwaysHidden은 뒤로가기 버튼으로 해당 액티비티가 foreground 되어도 동작한다.

 

3. adjust 계열 속성

 

Value

Description

"adjustUnspecified"

Resize pan 정하지 않고 system 설정에 따라서 자동으로 선택하게 한다.

기본 설정값이다.

"adjustResize"

화면의 soft keyboard 맞춰서 항상 resize 되도록 한다. (EditText 안보일 수도 있음. )

"adjustPan"

EditText 창을 가리지 않고, EditText 부분이 화면에 보이도록 레이아웃이 위로 스크롤된다.

 

늘 그렇듯이 android의 developer page를 항상 참고해야 한다.

참고 : http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

 

추가로 Keyboard가 가로모드시 화면을 모두 덮어 버리면, EditText의 android:imeOptions="flagNoExtractUI" 를 설정



: