기록

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

[Study]/Android

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

Dannnnnn 2022. 10. 20. 03:19
반응형

앱을 쓰다 보면 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를 눌러 키보드를 띄운 뒤, 바깥 부분을 누르면 올라와 있던 키보드가 사라지는 걸 볼 수 있다.

반응형