android2012.10.11 21:01

[Soft Keyboard 가 뭔가요?]

접기

일반 Keyboard 처럼 기계적으로 직접 키를 누르는 것이 아니라, 터치 스크린 등의 가상의 키보드를 통해 입력하는 것을 Soft Input 이라고 하며, 이 때 사용되는 가상의 키보드는 Soft Keyboard 라고 합니다.

접기




어떤 값들이 들어갈 수 있나요?


android:windowSoftInputMode = "state mode | adjust mode " 의 형태로 주로 사용합니다.

예를 한번 볼까요?

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



state mode 는 말 그대로, 보여줄 지 안 보여줄지에 대한 mode 설정.
adjust mode 는 말 그대로, soft keyboard 가 나올 때 화면을 어떻게 조정할 것인지에 대한 mode 설정 입니다.

이 때 주의할 것은 state mode 또는 adjust mode 또는 state mode | adjust mode 는 가능하지만,
이 외의 경우에 대해서는 undefined 값으로 바뀌어 설정됩니다. 이 점을 주의하셔야 하겠습니다.

 Value Description
 stateUnspecified설정값 없음 ( undefined ). System에서 알아서 적절히 설정하거나 Theme에 영향을 받는다. 
 stateUnchanged지난 setting 값을 유지한다. 
 stateHiddenactivity "진입" 시에 keyboard 를 숨긴다. ( resume으로 돌아오는 경우는 적용되지 않는다. ) 
 stateVisibleactivity "진입" 시에 특이 사항이 없다면 keyboard 를 보여준다. 
 stateAlwaysVisibleactivity "진입" 시에 항상 keyboard 를 보여준다. 
( resume으로 돌아오는 경우는 적용되지 않는다. ) 
 adjustUnspecified설정값 없음( undefined ). System에서 알아서 mode 설정. 
여기서 System 설정은 Scroll 가능한 View 를 가지고 있다면 Resize 함.
 adjustResize Soft keyboard 공간을 위해 activity 를 resize 한다.
 adjustPanWindow의 focus를 input focus에 위치하도록 이동하여 보여준다. 
Typing 하는 동안에는 해당 view 를 볼 수 있지만, 
다른 UI 의 시야를 방해할 수 있기 때문에 추천되지는 않는다.


[adjustResize 와 adjustPan에 대한 상세 설명]

접기

화면의 최하단에 EditText가 있다고 가정하고, EditText를 Click 하여 Soft Keyboard를 띄웠을 때 다음과 같은 차이가 있습니다.

1. adjustResize 는 메인 윈도우의 사이즈가 줄어듭니다. Focus를 받은 EditText 가 보이지 않을 수 있습니다. ( 최하단에 있기 때문에 그럴 가능성이 매우 큽니다. ) Activity 에서 Scroll 이 지원된다면 Scroll 하여 해당 View 를 볼 수 있습니다.

2. adjustPan 은 메인윈도우의 사이즈는 그대로 유지되고, Focus를 받은 EditText가 보이도록 화면의 focus가 이동됩니다. EditText 자체는 보이나, 위쪽에 존재하는 다른 UI 들은 보이지 않습니다. 

접기


신고
Posted by 레드오이

티스토리 툴바