기록
[Android] editText 바깥 부분을 클릭하면 키보드 내려가게 하는 법 본문
반응형
앱을 쓰다 보면 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를 눌러 키보드를 띄운 뒤, 바깥 부분을 누르면 올라와 있던 키보드가 사라지는 걸 볼 수 있다.
반응형
'[Study] > Android' 카테고리의 다른 글
[Android] Hilt의 @Bind로 유지보수 쉽게 하기 (0) | 2023.01.12 |
---|---|
[Android] Navigation action cannot be found in the current destination 오류 해결 (0) | 2022.11.12 |
[Android] include 태그로 layout 재사용하기 (0) | 2022.10.02 |
[Android] LiveData (0) | 2022.09.29 |
[Bug] onMenuItemSelected에서 이전 값을 참조하는 현상 (0) | 2022.09.24 |