Keyboard Type — је конфигурација виртуелне тастатуре у Android-у, која одређује скуп приказаних знакова и распоред за одређено поље за унос. Android подржава мноштво унапред подешених типова: text (стандардна текстуална), number (бројчана), phone (телефонска), email (са симболом @), textPassword (за лозинке), datetime и друге. Сваки тип оптимизује интерфејс уноса за одређени задатак — на пример, email тастатура приказује симбол @ и тачку на главном екрану. Према подацима Android Developers (2026), правилан избор Keyboard Type смањује број притисака при уносу за 20–40% у поређењу са стандардном текстуалном тастатуром.
Главне тачке
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 стриктно следе наведени тип уноса.
// Програмско подешавање типа тастатуре
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
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) препоручује се искључивање аутоматске исправке, јер она често замењује исправне термине погрешним.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER активира бројчану тастатуру, која приказује само цифре, децимални раздвајач и знак минуса. Овај тип се користи за поља за унос количине, цена, година, кодова и других нумеричких података. Бројчана тастатура заузима мање простора на екрану од текстуалне и искључује случајни унос слова.
Number има три модификатора: TYPE_NUMBER_FLAG_DECIMAL додаје децималну тачку/зарез, TYPE_NUMBER_FLAG_SIGNED додаје знак минуса за негативне бројеве, TYPE_NUMBER_VARIATION_PASSWORD — за PIN-кодове, где се цифре приказују као скривени симболи. Комбинација number|numberDecimal|numberSigned ствара потпуно поље за унос бројева са покретним зарезом било ког знака.
// Нумерички унос са децималном тачком
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Провери унети број
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
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-а.
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"
<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"
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", како би корисник могао да провери унету лозинку пре слања обрасца.
<!-- 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 омогућава динамичку промену режима тастатуре у зависности од контекста или корисничког уноса. На пример, при пребацивању типа поља (текст/број/датум) или при промени локалитета. Метода setInputType() прима битску маску InputType и одмах ажурира тастатуру, ако је поље у фокусу.
// Пребацивање између текстуалног и нумеричког уноса
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)
}
// Провери да ли је поље нумеричко
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
}
Често постављана питања
Ако inputType није наведен, EditText подразумевано користи TYPE_CLASS_TEXT са заставицом TYPE_TEXT_FLAG_MULTI_LINE. То значи стандардну QWERTY тастатуру и вишелинијски унос. За већину поља препоручује се експлицитно навођење inputType, како би се обезбедило исправно понашање тастатуре и филтрирање знакова.
Користите атрибут 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() потребно је поново приказати тастатуру, јер систем можда неће аутоматски ажурирати IME. Позовите InputMethodManager.restartInput(view) за принудно ажурирање. Ако поље није у фокусу, прво позовите requestFocus(), затим restartInput.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође