EditText: 개념, 속성 및 Android에서 입력 필드 작업하기

저자: IT Sectr 게시일: 2026-07-07 읽는 시간: 9 분

EditText는 사용자 인터페이스에서 텍스트를 입력하고 편집하기 위해 설계된 기본 Android 구성 요소입니다. TextView를 상속하며 가상 또는 물리적 키보드를 통해 문자 입력을 지원합니다. EditText는 한 줄 및 여러 줄 텍스트, 비밀번호, 숫자, 이메일 주소 및 전화번호 등 다양한 모드를 지원합니다. Android Developers (2026)에 따르면, EditText는 90% 이상의 Android 앱에서 폼, 검색 필드, 채팅 및 데이터 입력 화면을 만드는 데 사용됩니다.

핵심 사항

  • EditText는 Android의 기본 텍스트 입력 구성 요소로, TextView의 하위 클래스입니다.
  • 입력 모드 — 텍스트, 숫자, 비밀번호, 이메일, 전화 및 여러 줄 입력을 지원합니다.
  • XML 속성 — inputType, maxLines, hint, textColorHint 및 기타 매개변수를 통한 구성.
  • 리스너 — TextWatcher(변경 추적) 및 OnEditorActionListener(작업 처리).
  • Material Design — TextInputLayout이 플로팅 레이블 및 오류 메시지로 EditText를 확장합니다.

Android에서 EditText란

EditText는 android.widget 패키지의 클래스로, 사용자 데이터 입력을 위한 대화형 텍스트 필드를 구현합니다. Android 상속 계층 구조에서 EditText는 TextView를 확장하므로 글꼴, 색상 및 정렬 관리를 포함한 텍스트 레이블의 모든 속성을 상속합니다. EditText와 TextView의 주요 차이점은 콘텐츠 편집 기능입니다 — 사용자는 인터페이스에서 직접 텍스트를 입력, 삭제 및 수정할 수 있습니다.

EditText는 입력된 텍스트를 저장하고 삽입, 삭제 및 바꾸기 작업을 지원하는 Editable 인스턴스와 연결됩니다. 입력 시 EditText는 자동으로 커서 위치, 텍스트 선택 및 실행 취소/다시 실행을 위한 변경 기록을 관리합니다. Android Developers Guide (2026)에 따르면, EditText는 EditText를 상속하는 AutoCompleteTextView 클래스를 통해 자동 완성도 지원합니다.

EditText의 아키텍처는 모델(Editable), 뷰(TextView) 및 컨트롤러(InputConnection)의 분리를 기반으로 합니다. 포커스를 얻으면 EditText는 InputConnection을 생성하고, 이를 통해 입력 시스템이 문자, 키 누름 및 편집 명령을 전달합니다. 이 메커니즘은 가상 키보드에서 물리적 Bluetooth 키보드 및 음성 입력에 이르기까지 모든 입력 방식과의 호환성을 보장합니다.

kotlin
val editText = EditText(context).apply {
    hint = "텍스트 입력"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

EditText의 주요 속성

EditText는 동작과 모양을 미세 조정하기 위한 수십 개의 속성을 제공합니다. 이러한 속성은 XML 레이아웃과 Kotlin 또는 Java를 통한 프로그래밍 방식 모두에서 설정할 수 있습니다. 속성은 텍스트 제어, 제약 조건, 시각적 스타일링 및 키보드 상호 작용의 범주로 나뉩니다.

속성설명예시 값
android:hint빈 필드에 표시되는 힌트 텍스트"이메일 입력"
android:inputType입력 모드(텍스트, 숫자, 비밀번호 등)textEmailAddress
android:maxLines최대 줄 수3
android:maxLength문자 단위 최대 텍스트 길이100
android:textColorHint힌트 텍스트 색상#999999

android:hint 속성은 가장 중요한 속성 중 하나입니다 — 필드에 어떤 데이터가 필요한지 사용자에게 알려줍니다. 텍스트가 입력되면 힌트가 자동으로 숨겨집니다. 힌트는 폼 제출에 참여하지 않으며 필드 값으로 저장되지 않습니다. Material Design은 보다 현대적인 외관을 위해 일반 힌트 대신 플로팅 레이블이 있는 TextInputLayout을 사용할 것을 권장합니다.

  • android:selectAllOnFocus — 포커스를 받으면 모든 텍스트를 선택합니다(검색 필드에 유용).
  • android:maxLength — 입력 문자 수를 제한하고 초과분을 자릅니다.
  • android:lines — 필드 높이를 줄 단위로 고정 설정합니다(minLines와 반대).
  • android:gravity — 필드 내 텍스트 정렬: left, center, top 등.
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

입력 모드 및 inputType

inputType 속성은 사용자에게 표시될 키보드 유형과 입력에 허용되는 문자를 결정합니다. 입력 클래스(TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE)가 수정자와 결합되는 비트 마스크입니다.

입력 모드는 키보드 레이아웃을 변경할 뿐만 아니라 텍스트 처리에도 영향을 줍니다. 숫자 모드에서는 숫자와 소수 구분 기호만 허용되고, 이메일 모드에서는 @ 기호와 도메인 확장자를 사용할 수 있으며, 전화 모드에서는 숫자와 +, #, * 기호가 표시됩니다. 올바른 inputType 선택은 사용자 경험에 큰 영향을 미칩니다 — 부적절한 키보드는 사용자가 모드를 전환하도록 강제하여 폼 작성 시간을 30~50% 증가시킵니다.

Material Design Guidelines (2025)에 따르면 각 필드에 가장 구체적인 inputType을 사용하는 것이 좋습니다: 비밀번호에는 textPassword, 가격에는 numberDecimal, 전화번호에는 phone, 여러 줄 입력에는 textMultiLine. 이렇게 하면 폼 작성 속도가 빨라지고 입력 오류가 줄어듭니다.

kotlin
// 프로그래밍 방식 inputType 설정
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

EditText 리스너: TextWatcher 및 OnEditorActionListener

TextWatcher는 EditText에서 텍스트 변경을 실시간으로 추적하기 위한 인터페이스입니다. 세 가지 메서드가 포함되어 있습니다. beforeTextChanged는 변경 전에 호출되고, onTextChanged는 변경 중에 호출되고, afterTextChanged는 텍스트 변경 완료 후에 호출됩니다. TextWatcher는 입력 검증, 문자 수 계산, 검색 및 자동 완성에 사용됩니다.

OnEditorActionListener는 키보드에서 사용자 작업을 처리합니다: Done(IME_ACTION_DONE), Search(IME_ACTION_SEARCH), Send(IME_ACTION_SEND), Next(IME_ACTION_NEXT) 등을 누릅니다. 이 리스너는 폼 탐색을 구성하는 데 특히 유용합니다 — Next를 누르면 자동으로 다음 필드로 포커스가 이동하고, Done을 누르면 키보드가 숨겨지고 제출이 수행됩니다.

Android Developers Blog (2025)에 따르면, android:imeOptions 속성과 함께 OnEditorActionListener를 적절히 사용하면 추가 제출 버튼 없이 직관적인 폼을 만들 수 있습니다 — 사용자가 필드를 작성하고 키보드에서 Done을 누르면 저장이나 검색이 트리거됩니다.

kotlin
// 이메일 검증용 TextWatcher
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// 폼 제출용 OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

EditText 코드 예제

이메일 및 비밀번호 입력을 위해 EditText를 사용하여 로그인 화면을 만드는 완전한 예제를 살펴보겠습니다. 이 예제는 inputType 구성, TextWatcher를 통한 검증 및 로그인 버튼 누름 처리를 보여줍니다.

로그인 화면 XML 레이아웃

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

EditText 프로그래밍 방식 설정

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

EditText 스타일링

EditText는 XML 속성, 테마 및 스타일을 통한 사용자 지정을 지원합니다. 텍스트 색상, 힌트 색상, 밑줄 색상(backgroundTint), 글꼴 스타일, 텍스트 크기 등을 변경할 수 있습니다. Material Components는 boxStrokeColor, boxBackgroundColor 및 endIconMode를 포함한 사용자 지정 속성이 있는 MaterialComponents.EditText 테마를 제공합니다.

EditText의 밑줄 색상을 변경하려면 android:backgroundTint 속성을 사용합니다. 이 속성은 기본 상태와 포커스 상태의 색상을 설정합니다. Material Design에서 밑줄 색상은 테마의 colorPrimary를 통해 관리됩니다. 완전한 사용자 지정을 위해 res/drawable 폴더에 배경용 사용자 지정 drawable을 만들 수 있습니다.

스타일속성결과
텍스트 색상android:textColor입력된 텍스트 색상 변경
힌트 색상android:textColorHint힌트 텍스트 색상 변경
밑줄android:backgroundTint필드 아래 선 색상 변경
글꼴 크기android:textSizesp 단위로 텍스트 크기 설정
글꼴android:fontFamily사용자 지정 글꼴 적용

앱의 모든 EditText 필드에 일관된 스타일을 만들려면 테마에 전역 스타일을 정의하는 것이 좋습니다. Material Design은 TextInputLayout을 사용하는 모든 입력 필드에 자동으로 적용되는 Widget.MaterialComponents.TextInputLayout.OutlinedBox 스타일을 제공합니다. 이렇게 하면 각 레이아웃에서 속성을 중복하지 않고 일관된 외관을 보장합니다.

자주 묻는 질문

EditText와 TextView의 차이점은 무엇인가요?

EditText는 TextView를 상속하며 텍스트 편집 기능을 추가합니다. TextView는 텍스트만 표시하는 반면, EditText는 사용자가 콘텐츠를 입력, 삭제 및 수정할 수 있게 합니다. EditText는 또한 inputType, TextWatcher, 커서 관리 및 기타 데이터 입력 관련 기능을 지원합니다.

EditText에서 특정 문자를 제한하려면 어떻게 하나요?

InputFilter를 사용하세요 — 입력 문자를 필터링하기 위한 인터페이스입니다. EditText는 setFilters() 메서드를 통해 필터 배열 설정을 지원합니다. 예를 들어, InputFilter.LengthFilter는 텍스트 길이를 제한하고, 사용자 지정 InputFilter는 특정 문자, 정규식 또는 유니코드 범위를 제한할 수 있습니다.

코드에서 EditText의 텍스트를 가져오려면 어떻게 하나요?

Kotlin에서는 editText.text.toString()을, Java에서는 editText.getText().toString()을 호출하세요. text 속성은 Editable을 반환하며, toString()을 통해 String으로 변환됩니다. 특히 필수 필드가 있는 폼에서는 텍스트를 사용하기 전에 항상 null 및 빈 값을 확인하세요.

EditText를 여러 줄로 만들려면 어떻게 하나요?

android:inputType="textMultiLine" 속성을 설정하거나 프로그래밍 방식으로 InputType.TYPE_TEXT_FLAG_MULTI_LINE 플래그를 추가하세요. 여러 줄 모드에서 EditText는 Enter로 줄 바꿈을 허용하고 높이가 자동으로 확장됩니다. 높이를 제한하려면 android:maxLines 또는 android:minLines를 사용하세요.

편집을 위해 EditText를 비활성화하려면 어떻게 하나요?

android:enabled="false" 속성을 설정하거나 코드에서 editText.isEnabled = false를 호출하세요. 비활성화된 EditText는 터치에 반응하지 않고, 포커스를 받을 수 없으며 회색으로 표시됩니다(비활성 상태). 대안으로 android:focusable="false"를 사용하면 입력은 비활성화되지만 일반 모양은 유지됩니다.

요약

  • EditText는 Android의 기본 텍스트 입력 구성 요소로, 편집을 지원하는 TextView의 하위 클래스입니다.
  • inputType은 키보드 모드와 허용 문자를 결정합니다: 텍스트, 숫자, 이메일, 전화, 비밀번호.
  • TextWatcher는 검증 및 자동 완성을 위해 텍스트 변경을 실시간으로 추적할 수 있습니다.
  • OnEditorActionListener는 키보드 작업을 처리합니다: Done, Search, Next, Send.
  • InputFilter는 사용자 지정 필터를 통해 입력 문자와 텍스트 길이를 제한합니다.
  • 속성 hint, maxLines, maxLength, textColorHint가 동작과 모양을 구성합니다.
  • Material Design TextInputLayout을 통한 스타일링이 플로팅 레이블과 오류로 현대적인 외관을 제공합니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기