Keyboard Type — 개요, 키보드 유형 및 Android 입력 설정

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

Keyboard Type은 Android에서 가상 키보드의 구성으로, 특정 입력 필드에 표시할 문자 집합과 레이아웃을 정의합니다. Android는 다양한 사전 설정 유형을 지원합니다: text(표준 텍스트), number(숫자), phone(전화), email(@ 기호 포함), textPassword(비밀번호용), datetime 등. 각 유형은 특정 작업에 맞게 입력 인터페이스를 최적화합니다. 예를 들어, 이메일 키보드는 메인 화면에 @ 기호와 점을 표시합니다. Android Developers (2026)에 따르면, 올바른 Keyboard Type을 선택하면 표준 텍스트 키보드와 비교하여 키 입력 수가 20~40% 감소합니다.

주요 내용

  • Keyboard Type — Android에서 android:inputType 속성으로 정의되는 키보드 모드.
  • 주요 유형 — text, number, phone, email, textPassword, datetime 등 다양한 입력 시나리오용.
  • 입력 최적화 — 올바른 키보드 유형은 양식 작성을 20~40% 빠르게 함.
  • 플래그 조합 — inputType은 입력 클래스와 수정자(여러 줄, 자동 수정)를 결합함.
  • IME 옵션 — imeOptions 속성은 키보드의 작업 버튼(Done, Search, Next)을 제어함.

Android에서 Keyboard Type이란

Keyboard Type은 XML의 android:inputType 속성 값이나 코드에서 setInputType()의 프로그래매틱 호출에 의해 결정됩니다. InputType은 입력 클래스가 수정자 플래그와 결합되는 비트마스크입니다. 기본 클래스는 다음과 같습니다: 텍스트용 TYPE_CLASS_TEXT, 숫자용 TYPE_CLASS_NUMBER, 전화용 TYPE_CLASS_PHONE, 날짜 및 시간용 TYPE_CLASS_DATETIME.

Keyboard Type은 세 가지 측면에 영향을 줍니다: 가상 키보드 레이아웃(메인 화면에 표시되는 문자), 입력 문자 필터링(허용되는 문자), 자동 수정/자동 완성 동작. 예를 들어, 숫자 키보드는 숫자와 소수점 구분 기호만 표시하며, 사용자가 대소문자를 전환해도 문자를 표시하지 않습니다. Android Developers Documentation (2026)에 따르면, 클래스와 플래그를 결합하면 고도로 전문화된 모드(자동 수정이 있는 여러 줄 텍스트, 부동 소수점 숫자, 자동 채우기 지원 비밀번호)를 만들 수 있습니다.

Keyboard Type은 입력 시스템(IME)에 대한 권장 사항임을 이해하는 것이 중요합니다. 일부 타사 키보드(Gboard, SwiftKey)는 사용자가 자신의 기본 설정을 지정한 경우 지정된 유형을 부분적으로 무시할 수 있습니다. 그러나 대부분의 표준 Android 키보드와 Google Gboard는 지정된 입력 유형을 엄격히 따릅니다.

kotlin
// 프로그래매틱 키보드 유형 설정
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — 표준 텍스트 키보드

TYPE_CLASS_TEXT는 텍스트 입력의 기본 클래스입니다. 문자, 숫자 및 기호가 포함된 표준 QWERTY 키보드를 활성화합니다. 텍스트 클래스에는 동작을 세분화하는 가장 많은 수정자가 있습니다: TYPE_TEXT_FLAG_CAP_SENTENCES(문장 시작 자동 대문자), TYPE_TEXT_FLAG_AUTO_CORRECT(자동 수정), TYPE_TEXT_FLAG_MULTI_LINE(여러 줄 모드), TYPE_TEXT_FLAG_NO_SUGGESTIONS(제안 비활성화).

텍스트 키보드 수정자는 정확한 구성을 만들기 위해 결합될 수 있습니다: 예를 들어, text|textCapSentences|textAutoCorrect는 자동 대문자화와 오타 수정이 필요한 댓글 입력 필드에 적합합니다. 반면 text|textNoSuggestions는 자동 수정이 해로울 수 있는 코드나 특수 용어 입력에 사용됩니다.

UX Stack Exchange (2025)에 따르면, 자동 수정이 활성화된 텍스트 키보드는 일반 사용자의 입력 속도를 15~25% 향상시키지만, 기술 용어(코드, URL, 이메일)의 경우 자동 수정이 올바른 용어를 잘못된 용어로 대체하는 경우가 많으므로 자동 수정을 비활성화하는 것이 좋습니다.

xml
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"

<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"

Number — 숫자 키보드

TYPE_CLASS_NUMBER는 숫자 키보드를 활성화하며, 숫자, 소수점 구분 기호 및 빼기 기호만 표시합니다. 이 유형은 수량, 가격, 나이, 코드 및 기타 숫자 데이터의 입력 필드에 사용됩니다. 숫자 키보드는 텍스트 키보드보다 화면 공간을 적게 차지하며 실수로 문자를 입력하는 것을 방지합니다.

Number에는 세 가지 수정자가 있습니다: TYPE_NUMBER_FLAG_DECIMAL은 소수점/쉼표를 추가하고, TYPE_NUMBER_FLAG_SIGNED는 음수에 빼기 기호를 추가하며, TYPE_NUMBER_VARIATION_PASSWORD는 PIN 코드용(숫자가 숨겨진 문자로 표시됨)입니다. number|numberDecimal|numberSigned 조합은 모든 부호의 부동 소수점 숫자를 입력하기 위한 완전한 필드를 만듭니다.

  • number — 양의 정수(나이, 제품 수량).
  • numberDecimal — 소수 부분이 있는 숫자(가격, 무게, 키).
  • numberSigned — 부호가 있는 숫자(온도, 좌표).
  • numberPassword — PIN 코드용 숨겨진 숫자 입력.
kotlin
// 소수점이 있는 숫자 입력
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// 입력된 숫자 확인
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0

Phone 및 Email — 특수 키보드

TYPE_CLASS_PHONE은 전화 키보드를 활성화하며, 전화번호에 일반적인 숫자와 기호(+, #, *, (, ))를 표시합니다. 숫자 키보드와 달리 Phone은 추가 모드에서 문자 레이아웃도 표시합니다. 전화번호에는 문자가 포함될 수 있기 때문입니다(예: 1-800-FLOWERS). Phone 클래스에는 추가 플래그가 없지만 내선 번호 입력을 위한 TYPE_TEXT_VARIATION_PHONE_ETC를 지원합니다.

TYPE_TEXT_VARIATION_EMAIL_ADDRESS는 이메일 키보드를 활성화하며, @ 기호와 점이 메인 화면에 있고 일반적인 도메인 확장자(.com, .net, .org)도 사용할 수 있습니다. Gboard는 @ 뒤에 입력할 때 인기 도메인이 있는 버튼을 추가로 표시합니다. 이메일 키보드는 이메일 주소에 비표준 문자 조합이 포함될 수 있으므로 자동 수정을 자동으로 비활성화합니다.

Google Material Design Guidelines (2025)에 따르면, 전화 필드에는 허용되는 문자 집합을 제한하는 android:digits 속성을 추가로 지정하는 것이 좋습니다. 이메일 필드의 경우 비밀번호 관리자와 Google Autofill의 자동 채우기를 지원하기 위해 autofillHints="email"을 지정하는 것도 중요합니다.

xml
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"

<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"

Password — 비밀번호용 키보드

TYPE_TEXT_VARIATION_PASSWORDTYPE_NUMBER_VARIATION_PASSWORD는 민감한 데이터를 위한 입력 모드입니다. textPassword가 설정되면 입력된 문자가 점이나 별표로 표시됩니다(Android 버전 및 키보드에 따라 다름). 이 모드의 키보드는 자동 수정과 사용자 사전에 단어 저장을 비활성화하여 예측 입력 기능을 통한 비밀번호 유출을 방지합니다.

Password 키보드는 필드 내용의 스크린샷 기능(FLAG_SECURE 플래그)도 비활성화하지만, 이 동작은 특정 키보드 구현에 따라 다릅니다. Android 8.0(API 26)부터 importantForAutofill="yes" 속성이 설정된 경우 비밀번호 키보드는 비밀번호 관리자를 통한 자동 채우기를 지원합니다.

Android Security Recommendations (2025)에 따르면, 비밀번호 필드에는 다음도 권장됩니다: 매우 긴 비밀번호(데이터베이스 공격 벡터가 될 수 있음)를 방지하기 위해 maxLength 설정, 사용자가 양식 제출 전에 입력한 비밀번호를 확인할 수 있도록 inputType="textPassword"를 TextInputLayout 및 endIconMode="password_toggle"과 함께 사용.

xml
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">

    @+id/etPasswordField
    android:inputType="textPassword"
    android:maxLength="64"
    android:importantForAutofill="yes" />

</com.google.android.material.textfield.TextInputLayout>

코드에서 Keyboard Type 설정

Keyboard Type의 프로그래매틱 설정은 컨텍스트나 사용자 입력에 따라 키보드 모드를 동적으로 변경할 수 있게 합니다. 예를 들어, 필드 유형(텍스트/숫자/날짜) 전환 시 또는 로케일 변경 시. setInputType() 메서드는 InputType 비트마스크를 받아들이고 필드가 포커스된 경우 즉시 키보드를 업데이트합니다.

동적 유형 전환

kotlin
// 텍스트 입력과 숫자 입력 간 전환
fun switchInputType(field: EditText, isNumeric: Boolean) {
    field.inputType = if (isNumeric) {
        InputType.TYPE_CLASS_NUMBER or
            InputType.TYPE_NUMBER_FLAG_DECIMAL
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
    }
    field.setSelection(field.text.length)
}

현재 유형 확인

kotlin
// 필드가 숫자형인지 확인
fun isNumericInput(field: EditText): Boolean {
    val type = field.inputType
    return (type and InputType.TYPE_MASK_CLASS) ==
        InputType.TYPE_CLASS_NUMBER
}

// 자동 수정이 활성화되었는지 확인
fun isAutoCorrectEnabled(field: EditText): Boolean {
    return (field.inputType and
        InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}

자주 묻는 질문

Keyboard Type을 지정하지 않으면 어떻게 되나요?

inputType이 지정되지 않은 경우 EditText는 기본적으로 TYPE_CLASS_TEXT와 TYPE_TEXT_FLAG_MULTI_LINE 플래그를 사용합니다. 즉, 표준 QWERTY 키보드와 여러 줄 입력입니다. 대부분의 필드에서 올바른 키보드 동작과 문자 필터링을 보장하려면 inputType을 명시적으로 지정하는 것이 좋습니다.

"Enter" 대신 "Done" 버튼이 있는 키보드를 만드는 방법은?

EditText에서 android:imeOptions="actionDone" 속성을 사용하세요. 그러면 Enter 버튼이 Done 버튼으로 대체됩니다. 다른 옵션: actionSearch(돋보기), actionNext(오른쪽 화살표), actionSend(보내기). 코드에서 OnEditorActionListener를 통해 누름 처리를 구현하세요.

특정 필드의 키보드 진동을 비활성화할 수 있나요?

특정 필드의 진동을 비활성화할 수 없습니다 — 이는 사용자가 키보드 설정에서 제어하는 시스템 설정입니다. 그러나 EditText에 android:focusable="false" 속성을 설정하거나 dispatchTouchEvent를 통해 표시를 재정의하여 키보드가 완전히 나타나지 않도록 방지할 수 있습니다.

텍스트 복사가 가능한 읽기 전용 필드를 만드는 방법은?

android:inputType="none"을 설정하거나 프로그래매틱 방식으로 editText.setKeyListener(null)을 호출하세요. 필드는 텍스트를 표시하지만 포커스 시 키보드가 나타나지 않습니다. 사용자는 텍스트를 선택하고 복사할 수 있지만 편집할 수는 없습니다. 대안으로 textIsSelectable="true"가 있는 TextView를 사용하는 방법이 있습니다.

setInputType() 후에 키보드가 변경되지 않는 이유는?

setInputType() 호출 후 시스템이 IME를 자동으로 업데이트하지 않을 수 있으므로 키보드를 다시 표시해야 합니다. InputMethodManager.restartInput(view)를 호출하여 강제로 업데이트하세요. 필드가 포커스되지 않은 경우 먼저 requestFocus()를 호출한 다음 restartInput을 호출하세요.

요약

  • Keyboard Type은 Android 입력 필드의 키보드 레이아웃, 필터링 및 동작을 정의합니다.
  • text — 자동 수정, 대문자화 및 여러 줄을 위한 수정자가 있는 표준 QWERTY 키보드.
  • number — signed 및 decimal 옵션이 있는 정수 및 소수용 숫자 키보드.
  • phone — 숫자, +, #, * 및 영숫자 번호 지원이 있는 전화 키보드.
  • email — @, 점 및 도메인 확장자 빠른 액세스가 있는 키보드.
  • textPassword — 자동 수정 및 사전 저장이 비활성화된 숨겨진 입력.
  • imeOptions는 키보드의 작업 버튼(Done, Search, Next, Send)을 구성합니다.

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

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

프로젝트 논의

더 읽어보기