본문 바로가기

android/UI

[ Android ] Keyboard - 키보드 숨기기

반응형

Android에서 EditText에서 키보드를 숨기기(해제) 위한 방법은 여러 가지가 있습니다. 여기에서는 가장 일반적으로 사용되는 방법들을 설명하겠습니다.

1. 사용자가 EditText 외부를 터치했을 때 키보드를 숨기기

사용자가 EditText 외부를 터치했을 때 키보드를 숨기기 위해, ActivityonTouchEvent()를 재정의하여 키보드를 숨길 수 있습니다.

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        View view = getCurrentFocus();
        if (view != null) {
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            view.clearFocus();
        }
    }
    return super.onTouchEvent(event);
}

2. EditText에서 포커스를 잃을 때 키보드를 숨기기

EditText가 포커스를 잃었을 때 키보드를 숨기고 싶다면, OnFocusChangeListener를 사용합니다.

EditText editText = findViewById(R.id.edit_text);
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    }
});

3. 프로그래밍적으로 키보드를 숨기기

프로그래밍적으로 특정 이벤트(예: 버튼 클릭)에서 키보드를 숨기려면, 다음 코드를 사용할 수 있습니다.

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

4. 버튼 클릭 시 키보드를 숨기기

버튼 클릭 시 키보드를 숨기려면, 버튼의 OnClickListener에서 키보드를 숨기는 코드를 추가합니다.

Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
});

5. Activity 종료 시 키보드를 숨기기

Activity가 종료될 때 키보드를 숨기려면, onPause() 메서드에서 다음과 같은 코드를 추가할 수 있습니다.

@Override
protected void onPause() {
    super.onPause();
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    View view = getCurrentFocus();
    if (view != null) {
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
}

위의 방법들을 사용하여 Android에서 EditText에 입력된 키보드를 필요할 때 숨길 수 있습니다. 필요에 따라 적합한 방법을 선택하여 사용하세요.

반응형