안드로이드의 소프트 키보드는 화면에서 사용자 입력을 위한 EditText나 AutoCompleteTextView 등이 포커스를 받는 순간 자동으로 아래에서 올라오는데 자바 코드에서 특정 순간에 키보드를 보이게 하거나 사라지게 할 수 있으며 그 기능을 제공하는 클래스는 InputMethodManager를 이용한다.
InputMethodManager manager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
InputMethodManager클래스가 제공하는 showSoftInput() 함수와 hideSoftInputFromWindow()함수를 이용해 보이고/숨김을 처리한다.
- showSoftInput(View view, int flags) : 키보드 나타냄
- hideSoftInputFromWindow(IBinder windowToken, int flags) : 키보드 숨김
if (v == hiddenBtn) {
manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
} else if (v == showBtn) {
manager = showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
showSoftInput()함수를 이용해 키보드를 나타낼때, 해당 뷰에 포커스가 없는 상태라면 requestForcus()함수를 이용해 포커스를 요청한 후 showSoftInput() 함수로 키보드가 나타나게 해야 한다.
editText.requestFocus();
manager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
위의 두 함수를 이용하는 방법 외에 toggleSoftInput() 함수를 이용하는 것도 가능하다.
- toggleSoftInput(int showFlags, int hideFlags);
- 기본(설정 안된 경우) : adjustUnspecified와 stateUnspecified가 적용
- adjustPan: 키보드가 올라올 때 입력 EditText에 맞춰 화면을 위로 올림
- adjustResize: 키보드가 올라올 때 액티비티의 크기 조정
- adjustUnspecified: 시스템이 알아서 상황에 맞는 옵션 설정
- stateHidden: 액티비티 실행시 키보드가 자동으로 올라오는 것 방지
- stateVisible: 액티비티 실행 시 키보드가 자동으로 올라옴
- stateUnspecified: 시스템이 적절한 키보드 상태를 설정하거나 테마에 따라 설정
'프로그래밍 > Android' 카테고리의 다른 글
Android 최상위 액티비티 확인 방법 (0) | 2018.10.31 |
---|---|
Failed to resolve: play-services-basement (0) | 2018.10.30 |
다양한 구글 기본 앱 연동 (with INTENT call) (0) | 2018.10.24 |
인텐트 필터(Intent Filter) (0) | 2018.10.24 |
DisplayMetrics 객체의 스마트폰의 크기 정보 구하기 (0) | 2018.10.23 |