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 : 키보드에 따라 레이아웃 조정
참고
- https://gogorchg.tistory.com/entry/Android스크랩-edittext-관련-사항들
- https://gogorchg.tistory.com/entry/Android-showSoftInput-%EC%99%80-hideSoftInputFromWindow-%ED%85%8C%EC%8A%A4%ED%8A%B8
감사합니다.
❤️
Love YourSelf
'Android' 카테고리의 다른 글
[Android] ViewHolder패턴을 활용한 Base ListView 만들기 (0) | 2019.09.20 |
---|---|
[Android] 빌드에러 : Execution failed for task ':app:packageDebug'. (0) | 2019.09.06 |
[Android] Android Studio Live Template 알아두기#2 (0) | 2019.08.13 |
[Android] Android Studio Live Template 알아두기#1 (0) | 2019.08.12 |
[Android] OnItemClickListener not working in listView (1) | 2019.08.07 |