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 утиче на три аспекта: распоред виртуелне тастатуре (који знакови су видљиви на главном екрану), филтрирање унетих знакова (који знакови су дозвољени) и понашање аутоматске исправке/аутоматског довршавања. На пример, number тастатура приказује само цифре и децимални раздвајач, и не приказује слова, чак и ако корисник промени режим. Према подацима 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 тастатуру са словима, цифрама и симболима. Класа Text има највећи број модификатора, који прецизирају понашање: 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 активира телефонску тастатуру, која приказује цифре и симболе карактеристичне за телефонске бројеве: +, #, *, (, ). За разлику од number тастатуре, 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), password тастатуре подржавају аутоматско попуњавање путем менаџера лозинки, ако је постављен атрибут 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, како би се обезбедило исправно понашање тастатуре и филтрирање знакова.

Како направити тастатуру са дугметом „Done" уместо „Enter"?

Користите атрибут android:imeOptions="actionDone" на EditText-у. Ово ће заменити дугме Enter дугметом Done. Друге опције: 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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође