본문 바로가기
안드로이드 자바

[Java][Android] EditText 포커스 해제 시 키보드 숨기기

by teamnova 2025. 2. 6.
728x90

안녕하세요

안드로이드 개발을 할때 EditText에 포커스를 두면 키보드가 나타나게 됩니다.

그리고 이 키보드를 숨기려면 기본적으로 일일히 키보드 숨김 버튼을 눌러야 하게끔 되어있습니다.

 

하지만 사용성 측면에서 키보드 밖 화면을 터치했을 때 키보드가 사라지게끔 하는 기능을 추가하는것이 좋습니다.

오늘은 이 기능을 구현해보도록 하겠습니다.

 

우선 전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    View parentView = findViewById(R.id.parent_view); // ID를 사용하여 부모 뷰 찾기
    parentView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        hideKeyboard(v);
      }
    });

  }

  public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
  }
  
}

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/parent_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center">

  <EditText
    android:id="@+id/et"
    android:layout_width="200dp"
    android:layout_height="50dp"
    />
</LinearLayout>

 

 

우선 부모 뷰에 id값을 할당해줍니다. 여기서는 parent_view 라고 할당했습니다.

 

그리고 MainActivity에서 hideKeyboard 라는 메서드를 추가해줍니다.

 

그리고 부모 뷰를 클릭했을때, hideKeyboard 메서드가 호출되도록 구현하면 완료됩니다.

 

 

시연 영상입니다.