public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
View view = activity.getCurrentFocus();
if (view == null) {
view = new View(activity);
}
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
바로 위에 있는 method만 딱 필요하신분은 그냥 복사해서 가져가시면 되겠습니다.
참고로 액티비티안에서만 작동하고 dialog등에서 사용하실 분들은 여러가지로 응용해보시면 되겠습니다.
만들고 계신 java class에 붙여 넣으시고
필요한 때에 hidekeyboard 메소드를 호출해주시기만 하면됩니다.
예를들어 MainActivity에서 호출할 경우
...
hideKeyboard(MainActivity.this);
...
이런식으로 호출하시면 됩니다.
MainActivity.this는 그냥 this로 하셔도 되는 경우가 어떤 경우인지는 알아서들 판단해서 사용하세요!
잘 모르시면 this라고 써보시고 안되면 앞에 액티비티이름.this로 해서 넣으시면 됩니다!
원리 이해를 원하시는 분들은 아래도 봐주세요.
소프트 키보드를 숨기려면 InputMethodManager를 이용해야하는데 이는 imm이라고 많이 줄여서 부르고 있어요.
그런데 imm을 이용하려면 특정 context와 그 기능을 불러서 사용할 특정 View가 다 필요합니다.
그래서 위 메소드 입력값에 activity를 넣어줍니다.
또한 hideSoftInputFromWindow(window token, int flag) 안에 window token을 넣어주기 위해서
아래 세줄의 코드를 넣어 view를 찾고 window token값을 가져옵니다.
그리고 flag값에 0을 넣어 키보드를 숨겨주면 됩니다.
반대로 키보드를 표시하려면 1을 넣어주시면 되겠죠?
'안드로이드 개발' 카테고리의 다른 글
안드로이드 - Textview의 글자를 흐르게 만들어 보자, 흐르는 글(Textview marquee) (0) | 2020.03.18 |
---|---|
안드로이드 - Textview 글자 중앙 정렬하기(textAlignment center, gravity center) (0) | 2020.03.13 |
안드로이드 - 앱에서 activity는 무엇일까?(초보자도 이해할 수 있게!) (0) | 2020.03.10 |
안드로이드 - Textview 만들고 수정해보기(text 속성) (0) | 2020.03.07 |
안드로이드 - 개발할 때 내 핸드폰과 연결해서 앱을 실행시켜보기(가상 머신보다 좋은점) (0) | 2020.03.04 |