본문 바로가기
안드로이드

안드로이드 EditText 자동 키보드 막는 방법

by 코딩히어로 2022. 1. 28.
728x90

안드로이드 EditText를 화면에 배치할 경우 페이지 이동 시 자동으로 키보드가

올라오는 경우 EditText 쪽에 포커스가 주어지기 때문입니다.

페이지상에 EditText에 포커스가 주어지면 입력을 받아야 하기 때문에

안드로이드에서는 키보드를 띄우게 되는 것이죠.

 

상황에 따라서는 상당히 편리한 기능이긴 하지만 키보드에 의해

화면이 가려질 경우에는 상당히 거슬리는 존재이기도 합니다.

 

이러한 것들을 다 아울러서 사용자에게 포커스를 선택할 수 있도록 하는 방법

즉 EditText가 페이지에 존재하더라도 사용자의 클릭에 의해서 포커스가 주어지고

키보드가 화면상에 나타나도록 구현한다면 깔끔하다고 생각됩니다.

 

먼저 EditText를 Layout에 작성해 주도록 합니다.

 

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
    android:orientation="horizontal">

    <EditText
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:hint="0~24"
        android:gravity="center"
        android:layout_weight="2"></EditText>
        
</LinearLayout>

 

이렇게만 작성하면 focus가 자동으로 EditText에게 주어지게 됩니다.

다음과 같이 EditText가 포함된 상위 Layout에 두 가지 옵션을 추가하도록 하겠습니다.

추가할 옵션은 다음 두가지입니다.

 

android:focusable="true"
android:focusableInTouchMode="true"

 

포커스를 주지 않고 터치 시에만 포커스를 주는 옵션으로

위 소스코드에 적용하면 다음과 같습니다.

 

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"   
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">

<EditText
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:hint="0~24"
    android:gravity="center"
    android:layout_weight="2"></EditText>

</LinearLayout>

 

상위 Layout에 해당 옵션을 주는 이유는 해당 Layout 내에 있는 모든

EditText에 포커스 옵션을 주기 위함입니다.

즉 EditText가 여러 개가 되었든 해당 옵션을 공통으로 적용받게 됩니다.

저는 포커스 옵션을 페이지 구성의 제일 상위 Layout에 넣어서 사용하고 있습니다.

728x90
반응형

댓글