본문 바로가기

개발/Android

[Android] 키보드 올리기 / 숨기기 (android keyboard show / hide)

2019.08.26

개발하면서 경험했던 것을 정리한 포스트입니다. 오류 지적이나 제안 언제든지 환영합니다.

 


 

안드로이드를 개발하다보면 화면 전환으로 인해 자동으로 키보드가 올리고 / 숨기고 하도록 구현해야할때가 있습니다. 오늘은 이러한 방법을 알아보겠습니다.

 

  • InputMethodManager 객체생성
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  • 키보드 보이기
public boolean showSoftInput(View view, int flags) {
    throw new RuntimeException("Stub!");
}
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(view, 0);
  • 키보드 숨기기
public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) {
    throw new RuntimeException("Stub!");
}
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);

 

주의할 점은 여기서 showSoftInput 첫번째 인자에 들어가는 View에 Focus가 있지않으면 키보드가 나타나지 않습니다.

그럴때는 해당 View에 requestFocus()함수를 이용하여 포커스를 요청하면 정상적으로 키보드가 나타나는 것을 확인 할 수 있습니다.

 

메니페스트에서도 설정값에 따라 키보드에 대한 반응을 지정할 수 있습니다.

android:windowSoftInputMode="모드"

  • stateVisible : 자동 보이기
  • stateHidden : 자동으로 보이지 않음
  • stateAlwaysHidden : 에디터외에 포커스가 있을때 숨기기
  • adjustPan : 키보드 보일때 레이아웃이 유지됨
  • adjustResize : 키보드에 따라 레이아웃 조정

 

참고

 

감사합니다.

❤️

Love YourSelf