Keyboard Type — este configurația tastaturii virtuale în Android, care determină setul de caractere afișate și aspectul pentru un câmp de introducere specific. Android suportă multe tipuri prestabilite: text (text standard), number (numerică), phone (telefonică), email (cu simbolul @), textPassword (pentru parole), datetime și altele. Fiecare tip optimizează interfața de introducere pentru o sarcină specifică — de exemplu, tastatura email afișează simbolul @ și punctul pe ecranul principal. Conform datelor Android Developers (2026), alegerea corectă a Keyboard Type reduce numărul de apăsări la introducere cu 20–40% comparativ cu tastatura text standard.
Principalele puncte
Keyboard Type este determinat de valoarea atributului android:inputType în XML sau de apelul programatic setInputType() în cod. InputType este o mască de biți, unde clasa de introducere (clasa) este combinată cu flaguri-modificatori. Clasele de bază: TYPE_CLASS_TEXT pentru text, TYPE_CLASS_NUMBER pentru numere, TYPE_CLASS_PHONE pentru telefoane, TYPE_CLASS_DATETIME pentru date și timp.
Fiecare Keyboard Type influențează trei aspecte: aspectul tastaturii virtuale (care caractere sunt vizibile pe ecranul principal), filtrarea caracterelor introduse (care caractere sunt permise) și comportamentul de autocorectare/autocompletare. De exemplu, tastatura number afișează doar cifre și separatorul zecimal, și nu arată litere, chiar dacă utilizatorul schimbă modul. Conform datelor Android Developers Documentation (2026), combinarea claselor cu flaguri permite crearea de moduri înalt specializate: text multilinie cu autocorectare, număr cu virgulă mobilă, parolă cu posibilitate de autocompletare.
Este important de înțeles că Keyboard Type este o recomandare pentru sistemul de introducere (IME). Unele tastaturi terțe (Gboard, SwiftKey) pot ignora parțial tipul specificat, dacă utilizatorul și-a configurat propriile preferințe. Cu toate acestea, majoritatea tastaturilor standard Android și Google Gboard respectă strict tipul de introducere specificat.
// Configurarea programatică a tipului de tastatură
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — clasa de bază pentru introducerea textului. Activează tastatura standard QWERTY cu litere, cifre și simboluri. Clasa Text are cel mai mare număr de modificatori, care precisează comportamentul: TYPE_TEXT_FLAG_CAP_SENTENCES (literă mare automată la începutul propoziției), TYPE_TEXT_FLAG_AUTO_CORRECT (autocorectare), TYPE_TEXT_FLAG_MULTI_LINE (mod multilinie), TYPE_TEXT_FLAG_NO_SUGGESTIONS (dezactivarea sugestiilor).
Modificatorii tastaturii text pot fi combinați, creând o configurație precisă: de exemplu, text|textCapSentences|textAutoCorrect este potrivit pentru un câmp de introducere a comentariului, unde este necesară litera mare automată și corectarea greșelilor. În timp ce text|textNoSuggestions este utilizat pentru introducerea de cod sau termeni speciali, unde autocorectarea poate dăuna.
Conform datelor UX Stack Exchange (2025), tastatura text cu autocorectarea activată accelerează introducerea cu 15–25% pentru utilizatorul mediu, dar pentru termeni tehnici (cod, URL, email) se recomandă dezactivarea autocorectării, deoarece aceasta înlocuiește adesea termenii corecți cu cei incorecți.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER activează tastatura numerică, care afișează doar cifre, separatorul zecimal și semnul minus. Acest tip este utilizat pentru câmpuri de introducere a cantității, prețurilor, vârstei, codurilor și altor date numerice. Tastatura numerică ocupă mai puțin spațiu pe ecran decât cea text și exclude introducerea accidentală a literelor.
Number are trei modificatori: TYPE_NUMBER_FLAG_DECIMAL adaugă punctul/virgula zecimală, TYPE_NUMBER_FLAG_SIGNED adaugă semnul minus pentru numere negative, TYPE_NUMBER_VARIATION_PASSWORD — pentru coduri PIN, unde cifrele sunt afișate ca simboluri ascunse. Combinația number|numberDecimal|numberSigned creează un câmp complet pentru introducerea numerelor cu virgulă mobilă de orice semn.
// Introducere numerică cu separator zecimal
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Verificați numărul introdus
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE activează tastatura telefonică, care afișează cifre și simboluri caracteristice numerelor de telefon: +, #, *, (, ). Spre deosebire de tastatura number, phone arată și aspectul literelor în modul suplimentar, deoarece numerele de telefon pot conține litere (de exemplu, 1-800-FLOWERS). Clasa phone nu are flaguri suplimentare, dar suportă TYPE_TEXT_VARIATION_PHONE_ETC pentru introducerea numerelor interioare.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS activează tastatura email, pe care simbolul @ și punctul se află pe ecranul principal, iar extensiile de domeniu frecvente (.com, .net, .org) sunt de asemenea disponibile. Gboard afișează suplimentar butoane cu domenii populare la introducerea după @. Tastatura email dezactivează automat autocorectarea, deoarece adresele de email pot conține combinații nestandard de caractere.
Conform datelor Google Material Design Guidelines (2025), pentru câmpurile de telefon se recomandă specificarea suplimentară a atributului android:digits, care limitează setul de caractere permise. Pentru câmpurile email este de asemenea important să specificați autofillHints="email" pentru suportul autocompletării de la managerul de parole și 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 și TYPE_NUMBER_VARIATION_PASSWORD — sunt moduri de introducere pentru date confidențiale. La setarea textPassword, caracterele introduse sunt afișate ca puncte sau asteriscuri (depinde de versiunea Android și tastatură). Tastatura în acest mod dezactivează autocorectarea și salvarea cuvintelor introduse în dicționarul utilizatorului, prevenind scurgerea parolei prin funcțiile de introducere predictivă.
Password tastatura dezactivează și posibilitatea de a face captură de ecran a conținutului câmpului (flagul FLAG_SECURE), deși acest comportament depinde de implementarea tastaturii specifice. Începând cu Android 8.0 (API 26), tastaturile password suportă autocompletarea prin managerii de parole, dacă atributul importantForAutofill="yes" este setat.
Conform datelor Android Security Recommendations (2025), pentru câmpurile de parolă se recomandă de asemenea: setarea maxLength pentru prevenirea parolelor foarte lungi (care pot fi un atac asupra bazei de date), utilizarea inputType="textPassword" împreună cu TextInputLayout și endIconMode="password_toggle", pentru ca utilizatorul să poată verifica parola introdusă înainte de trimiterea formularului.
<!-- 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>
Configurarea programatică a Keyboard Type permite schimbarea dinamică a modului tastaturii în funcție de context sau de intrarea utilizatorului. De exemplu, la comutarea tipului de câmp (text/numeric/dată) sau la schimbarea localei. Metoda setInputType() primește o mască de biți InputType și actualizează imediat tastatura, dacă câmpul este în focus.
// Comutarea între introducerea textului și numerică
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)
}
// Verificați dacă câmpul este numeric
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Verificați dacă autocorectarea este activată
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Întrebări frecvente
Dacă inputType nu este specificat, EditText utilizează implicit TYPE_CLASS_TEXT cu flagul TYPE_TEXT_FLAG_MULTI_LINE. Aceasta înseamnă tastatura standard QWERTY și introducere multilinie. Pentru majoritatea câmpurilor se recomandă specificarea explicită a inputType, pentru a asigura comportamentul corect al tastaturii și filtrarea caracterelor.
Utilizați atributul android:imeOptions="actionDone" pe EditText. Aceasta va înlocui butonul Enter cu butonul Done. Alte opțiuni: actionSearch (lupă), actionNext (săgeată dreapta), actionSend (trimitere). Implementați gestionarea apăsării prin OnEditorActionListener în cod.
Nu se poate dezactiva vibrația pentru un anumit câmp — este o setare de sistem gestionată de utilizator în setările tastaturii. Cu toate acestea, se poate preveni complet apariția tastaturii, setând pe EditText atributul android:focusable="false" sau anulând afișarea prin dispatchTouchEvent.
Setați android:inputType="none" sau apelați programatic editText.setKeyListener(null). Câmpul va afișa textul, dar tastatura nu va apărea la focus. Utilizatorul va putea selecta și copia textul, dar nu îl va putea modifica. Alternativă — utilizați TextView cu textIsSelectable="true".
După apelul setInputType() este necesar să afișați din nou tastatura, deoarece sistemul poate să nu actualizeze IME automat. Apelați InputMethodManager.restartInput(view) pentru actualizare forțată. Dacă câmpul nu este în focus, apelați mai întâi requestFocus(), apoi restartInput.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și