본문 바로가기

안드로이드 개발

안드로이드 - 떠있는 핸드폰 키보드(가상키보드)를 숨겨보자! 바로 복사해서 쓰는 메소드 제공!

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을 넣어주시면 되겠죠?

 

 

오늘의 포스팅은 여기까지 입니다.

글이 유용하셨나요?

그렇다면 제 블로그를 즐겨찾기 추가하셔서 계속 보시는 것은 어떠신가요?

방문해주셔서 감사합니다.