[Android] 특정 순간에 키보드 제어하기

홈런볼·2022년 8월 19일
0

안드로이드

목록 보기
6/10

안드로이드 시스템은 액티비티 화면에서 editText뷰 같은 입력이 필요한 뷰가 포커스를 가지는 순간 자동으로 키보드를 제어할 수 있다.
하지만, 앱을 개발하다보면 특정한 순간에 키보드가 내려가거나 올라가도록 제어해야 될 수도 있다.
이런 경우 InputMethodManager 클래스를 사용하면된다.

1. Acitivity에서 사용하기

var imm : InputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager

InputMethodManger 를 선언한다.

  • 키보드 숨기기
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

view.getWindowToken()에서의 view는 editable의 성격을 띄는 뷰이다.

  • 키보드 보여주기
view.requestFocus()
imm.showSoftInput(view.getWindowToken(), 0);

showSoftInput() 메소드는 키보드를 화면에만 보여줄 뿐, editText 같이 입력이 필요한 뷰에 포커스를 강제하지 않는다. 그래서 포커스를 강제하기 위해 view.requestFocus() 를 호출한다.

2. Fragment에서 사용하기

InputMethodManager 클래스는 acitivty에서만 접근할 수 있다.

var imm = activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?

fragment에서 InputMethodManager를 호출하기 위해선 activity에 접근 한 후 getSystemService 메서드를 호출해야 한다.

fragment에서도 acitivity 에서 키보드 내리기, 키보드 올리기를 구현했던 것과 동일하게 코드를 호출하면 된다.


Reference

0개의 댓글