관리 메뉴

나만을 위한 블로그

[Android] editText 바깥 부분을 클릭하면 키보드 내려가게 하는 법 본문

Android

[Android] editText 바깥 부분을 클릭하면 키보드 내려가게 하는 법

참깨빵위에참깨빵_ 2020. 11. 30. 15:02
728x90
반응형

앱을 쓰다 보면 editText를 눌러 키보드를 올린 상태로 입력한 뒤, 바깥 부분을 아무데나 누르면 키보드가 내려가는 걸 볼 수 있다.

이 처리를 구현하고 싶다면 먼저 아래의 메서드를 만든다.

 

void hideKeyboard()
    {
        InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }

 

프래그먼트를 사용 중이라면 아래 코드를 쓰면 된다.

 

private void hideKeyboard()
    {
        if (getActivity() != null && getActivity().getCurrentFocus() != null)
        {
            // 프래그먼트기 때문에 getActivity() 사용
            InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }

 

다음은 위에서 만든 이 메서드를 어디에 붙이느냐는 것이다.

부모 레이아웃에 id값을 준 뒤, onCreate()에서 호출하기만 하면 된다.

 

layout.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                hideKeyboard();
                return false;
            }
        });

 

참조객체에 findViewById()를 한 뒤, setOnTouchListener()를 호출해 onTouch() 안에서 hideKeyboard()를 호출하기만 하면 된다.

이렇게 하고 앱을 빌드해서 editText를 눌러 키보드를 띄운 뒤, 바깥 부분을 누르면 올라와 있던 키보드가 사라지는 걸 볼 수 있다.

반응형
Comments