Keyboard Type — що це, види клавіатури та налаштування введення в Android

Автор: IT Sectr Опубліковано: 2026-07-07 Час читання: 9 хв

Keyboard Type — це конфігурація віртуальної клавіатури в Android, яка визначає набір відображуваних символів та розкладку для конкретного поля введення. Android підтримує багато попередньо встановлених типів: text (стандартний текст), number (цифрова), phone (телефонна), email (зі символом @), textPassword (для паролів), datetime та інші. Кожен тип оптимізує інтерфейс введення для конкретного завдання — наприклад, email-клавіатура показує символ @ та крапку на основному екрані. За даними Android Developers (2026), правильний вибір Keyboard Type скорочує кількість натискань при введенні на 20–40% порівняно зі стандартною текстовою клавіатурою.

Головне

  • Keyboard Type — режим клавіатури, що визначається атрибутом android:inputType в Android.
  • Основні типи — text, number, phone, email, textPassword, datetime для різних сценаріїв введення.
  • Оптимізація введення — правильний тип клавіатури прискорює заповнення форм на 20–40%.
  • Комбінація прапорів — inputType поєднує клас введення та модифікатори (багаторядковість, автовиправлення).
  • IME options — атрибут imeOptions керує кнопкою дії на клавіатурі (Done, Search, Next).

Що таке Keyboard Type в Android

Keyboard Type визначається значенням атрибута android:inputType в XML або програмним викликом 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, email) рекомендується вимкнути автовиправлення, оскільки воно часто замінює правильні терміни неправильними.

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 активує email-клавіатуру, на якій символ @ та крапка знаходяться на основному екрані, а також доступні поширені доменні розширення (.com, .net, .org). Gboard додатково показує кнопки з популярними доменами при введенні після @. Email-клавіатура автоматично вимикає автовиправлення, оскільки email-адреси можуть містити нестандартні комбінації символів.

За даними Google Material Design Guidelines (2025), для телефонних полів рекомендується додатково зазначати атрибут android:digits, який обмежує набір дозволених символів. Для email-полів також важливо зазначати autofillHints="email" для підтримки автозаповнення від менеджера паролів та Google Autofill.

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_PASSWORD та TYPE_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, щоб забезпечити коректну поведінку клавіатури та фільтрацію символів.

Як зробити клавіатуру з кнопкою «Готово» замість «Ентер»?

Використай атрибут android:imeOptions="actionDone" на EditText. Це замінить кнопку Enter на кнопку Готово. Інші варіанти: actionSearch (лупа), actionNext (стрілка вправо), actionSend (надіслати). Обробку натискання реалізуй через OnEditorActionListener в коді.

Чи можна відключити вібрацію клавіатури для певного поля?

Неможливо відключити вібрацію для конкретного поля — це системне налаштування, яким керує користувач у налаштуваннях клавіатури. Однак можна запобігти появі клавіатури повністю, встановивши на EditText атрибут android:focusable="false" або скасувавши показ через dispatchTouchEvent.

Як зробити поле лише для читання, але з можливістю копіювання тексту?

Встанови android:inputType="none" або програмно виклич editText.setKeyListener(null). Поле буде відображати текст, але клавіатура не з'явиться при фокусі. Користувач зможе виділити та скопіювати текст, але не змінювати його. Альтернатива — використання TextView з textIsSelectable="true".

Чому клавіатура не змінюється після 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 створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також