본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] SoftKeyboard ( Soft Input ) 를 강제로 띄워보아요. (물론 감추기도요)

by 돼지왕 왕돼지 2012. 1. 25.
반응형


0. History


- 이 글은 2012-01-25 초안 작성 시작하였습니다.
- 잘못된 정보, 오래된 정보, 오타가 있다면 Comment 남겨주세요. 확인 후 수정하겠습니다.
- 이 글은 2012-01-25 초안 작성 완료하였습니다.




1. Information.


Soft Keyboard 가 뭔가요?


Soft Keyboard 는 Hardware Keyboard 와 반대되는 말로 Software 로 된 keyboard를 말합니다.
안드로이드에서 카카오톡을 쓸 때 흰 색 커서가 깜빡이는 상자를 클릭하면 키보드가 아래에서 슝~ 하고 올라오죠?
그 녀석이 바로 Soft Keyboard 입니다.

Android Soft Input Keyboard




이 녀석을 강제로 나오게 할 수 있는건가요?


네 그렇습니다. 이 녀석을 강제로 나오게 할수도, 들어가게 할 수도 있습니다.
Soft Keyboard 에 대해 관리하는 System Class 가 있는데요 그 녀석은 InputMethodManager 입니다.

InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE );


요렇게 얻어옵니다.

그럼 어떻게 나타나고 숨기냐고요? 다음과 같이 toggle 을 이용하여 합니다.

imm.toggleSoftInput( 0, 0 );


Soft Keyboard 가 나와있는 상태에서 호출하면 Soft Keyboard 가 사라지고,
반대로 Soft Keyboard 가 없는 상태에서 호출하면 Soft Keyboard 가 나오게 됩니다.




Developer 의 API 문서에 따르면, show와 hide 관련도 있던데 이 녀석들은 왜 안 쓰나요?


Soft Keyboard의 show와 hide 관련하여 제공되는 API 들은 다음과 같습니다.

void hideSoftInputFromInputMethod( IBinder token, int flags );
boolean hideSoftInputFromWindow( IBinder windowToken, int flags );
boolean hideSoftInputFromWindow( IBinder windowToken, int flags, ResultReceiver resultReceiver );

boolean showSoftInput( View view, int flags, ResulrReceiver resultReceiver );
boolean showSoftInput( View view, int flags );
void showSoftInputFromInputMethod( IBinder token, int flags );

void toggleSoftInput( int showFlags, int hideFlags );
void toggleSoftInputFromWindow( IBinder windowToken, int showFlags, int hideFlags );


필자는 Button 을 눌렀을 때 보이도록, 또 숨기도록 하였습니다. 
기본적으로 이 soft keyboard 와 interact 할 view 가 없기 때문에 toggleSoftInput 을 제외한 나머지 API로는
Context 상 Soft Keyboard 를 불러 낼 수 없습니다.

기본적으로 EditText 와 같은 녀석들은 Soft Keyboard 를 다룰 Context 를 갖추고 있습니다. 

따라서 EditText 를 이용한다면
showSoftInput hideSoftInputFromWIndow를 통해서 soft keyboard 를 강제로 나타나게 하고, 숨기고 할 수 있습니다.


손가락 추천 꾸욱~ 더 좋은 글로 보답하겠습니다.


2. Summary


- SoftKeyboard 는 Hardware Keyboard 에 반대되는 개념으로, Software 적으로 구성된 keyboard 를 말한다.

- Soft Keyboard 는 InputMethodManager 를 통해서 강제로 나오도록, 숨기도록 할 수 있습니다.

- EditText 와 같이 Soft Keyboard 에 대한 Context 가 있는 녀석들은 show 나 hide 관련 API 를 써서 SoftKeyboard 를 조작 가능하지만, 그렇지 않은 경우는 toggle 을 이용해서 Control 합니다. 





3. References


-http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html 
   Android Developer Doc. InputMethodManager.




4. Tags






반응형

댓글