본문 바로가기

Programming/android

안드로이드 키보드 보이기, 숨기기

 

특정 동작을 했을 때, 소프트 키보드를 보여주고 싶을때에 사용한다.
키보드를 제어하려면 InputMethodManager객체를 사용한다.
InputMethodManager는 "android.view.inputmethod"에 존재한다.

이 객체는 activity에서, getSystemService로 구할 수 있으며, 변수는 Context.INPUT_METHOD_SERVICE로 구하여 오면 된다.

키보드를 보여줄때는,
public boolean showSoftInput (View view, int flags, ResultReceiver resultReceiver) 를 사용하고,

키보드를 가릴때는,
public boolean hideSoftInputFromWindow (IBinder windowToken, int flags) 를 사용하면 된다.

예를 들어보자.

[ ImmActivity.java ]

 

import android.view.inputmethod.InputMethodManager;

import android.widget.EditText;

 

public class ImmActivity extends Activity {

        

private InputMethodManager imm;

private EditText searchTxt;

      

     /** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState, CURRENT_MENU);

setContentView(R.layout.main);

init();

}

 

private void init(){

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

    searchTxt = (EditText) findViewById(R.id.search_edittext);

}

 

/**

* 키보드를 가림.

*/

private void hideKeyboard(){

    imm.hideSoftInputFromWindow(searchTxt.getWindowToken(), 0);

}

 

/**

* 키보드를 보여줌.

*/

private void showKeyboard(){

    imm.showSoftInput(searchTxt, 0);

}

}

 

굉장히 간단한 예제이므로, 별도의 설명이 필요없는…
그냥 위와 같이, init()에서 선언해주고, 필요에 따라서, showKeyboard(), hideKeyboard()를 호출하여 주면 된다는…
설명할 것도 없는 것을 주저리 주저리 적은듯…

 + 

내가 자주 사용하는 ,hideKeyboard() function

private void hideKeyboard(){

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

inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

}