InputType — ce este, atributele de introducere și configurarea lor în Android

Autor: IT Sectr Publicat: 2026-07-07 Timp de citire: 9 min

InputType — este un atribut Android care determină caracterul datelor introduse și comportamentul tastaturii pentru câmpurile de text. Valoarea InputType reprezintă o mască binară care combină clasa de intrare (text, număr, telefon, dată) și modificatorii (multilinie, autocorectare, litere mari, introducere ascunsă). InputType influențează tipul tastaturii afișate, filtrarea caracterelor introduse și funcționarea autocompletării. Conform Android Developers (2026), InputType este unul dintre cele mai importante atribute pentru asigurarea introducerii corecte a datelor și trebuie setat explicit pentru fiecare câmp de text editabil.

Principalele puncte

  • InputType — mască binară care determină clasa de intrare și modificatorii pentru EditText.
  • Clasele de intrare — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Modificatorii — flaguri care specifică comportamentul: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Combinarea — clasa și modificatorii se combină prin SAU binar pentru configurare precisă.
  • Influența — InputType corect accelerează introducerea, reduce erorile și îmbunătățește UX-ul formularului.

Ce este InputType în Android

InputType — este o constantă întreagă (Int) care codifică modul de introducere pentru un câmp de text. În Android, este definită în clasa android.text.InputType. Valoarea InputType constă din două părți: clasa de intrare (biții 0–4) și modificatorii (biții 5–31). Clasa de intrare determină tipul de bază al datelor — text, număr, telefon, dată. Modificatorii specifică comportamentul în cadrul clasei selectate — de exemplu, pentru clasa de text se poate activa autocorectarea, literele mari sau introducerea multilinie.

Mecanismul InputType funcționează la trei niveluri: la nivelul framework-ului Android determină care InputConnection va fi creat (conexiunea între EditText și IME); la nivelul IME (tastatură) indică ce caractere să afișeze și cum să proceseze introducerea; la nivelul aplicației filtrează caracterele prin InputFilter încorporat în EditText. Conform Android Source Code (AOSP, 2026), masca binară este procesată în metoda TextView.getInputType(), care returnează valoarea curentă, și setInputType(), care reconfigură filtrele interne și conexiunea cu IME.

O caracteristică importantă a InputType — nu poate fi citit din alt proces din motive de securitate. Acest lucru previne furtul de date prin accesarea tipului de intrare (de exemplu, determinarea dacă un câmp este parolă). La încercarea de a citi InputType din altă aplicație, se returnează TYPE_CLASS_TEXT în mod implicit.

kotlin
// Constantele de bază InputType
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// Masca pentru extragerea clasei
InputType.TYPE_MASK_CLASS       // 0x0000000F

Clasele InputType: TEXT, NUMBER, PHONE, DATETIME

În Android sunt definite patru clase de bază InputType. Fiecare clasă corespunde unei categorii specifice de date și activează tipul corespunzător de tastatură. Clasa este indicată în biții 0–4 ai măștii binare și poate fi extrasă prin masca TYPE_MASK_CLASS (0x0F).

ClasăConstantăTastaturăUtilizare
TEXTTYPE_CLASS_TEXT (1)QWERTYText, comentarii, descriere
NUMBERTYPE_CLASS_NUMBER (2)NumericăCantitate, preț, vârstă
PHONETYPE_CLASS_PHONE (3)TelefonicăNumăr de telefon
DATETIMETYPE_CLASS_DATETIME (4)Dată/orăDată, oră

TYPE_CLASS_DATETIME este rar folosit direct — de obicei pentru introducerea datei se utilizează DatePicker sau DatePickerDialog, nu un câmp de text. Cu toate acestea, în unele scenarii (introducerea rapidă manuală a datei) această clasă poate fi utilă. Nu are tastatură specializată și afișează de obicei tastatura numerică.

Fiecare clasă de intrare poate fi combinată cu variații (variation) — subtipuri indicate în biții 5–7. De exemplu, TYPE_TEXT_VARIATION_PASSWORD (bitul 5) adaugă clasei TEXT introducerea ascunsă. Biții de variație: 0x000000E0 (masca TYPE_MASK_VARIATION).

Flagurile-modificatoare InputType

Flagurile-modificatoare InputType (biții 8–31) adaugă capacități suplimentare clasei de bază. Ele nu schimbă tipul tastaturii, dar modifică comportamentul de introducere. Flagurile sunt specifice fiecărei clase — flagurile pentru TEXT nu funcționează cu NUMBER și invers. Mai jos sunt enumerați modificatorii principali pentru fiecare clasă.

Flaguri pentru TEXT

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — toate literele mari.
  • TYPE_TEXT_FLAG_CAP_WORDS — fiecare cuvânt cu literă mare.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — literă mare la începutul propoziției (implicit).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — corectarea automată a greșelilor.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — autocompletare (pentru AutoCompleteTextView).
  • TYPE_TEXT_FLAG_MULTI_LINE — introducere multilinie.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — dezactivarea sugestiilor.

Flaguri pentru NUMBER

  • TYPE_NUMBER_FLAG_SIGNED — permite numere negative (semnul minus).
  • TYPE_NUMBER_FLAG_DECIMAL — permite punctul zecimal.

Conform Android Developers Documentation (2026), flagurile pentru diferite clase nu se suprapun — încercarea de a folosi un flag TEXT cu NUMBER va fi ignorată. Pentru verificarea unui flag setat se utilizează ȘI binar: (inputType and FLAG) != 0.

Combinații InputType: exemple pentru diferite scenarii

Combinația corectă a InputType cu clase și flaguri este cheia creării de formulare confortabile. Să examinăm scenariile tipice și configurațiile InputType corespunzătoare. Fiecare scenariu optimizează introducerea pentru un tip specific de date, făcând formularul intuitiv și accelerând completarea.

ScenariuInputTypeTastatură
NumetextCapWordsQWERTY, fiecare cuvânt cu majusculă
EmailtextEmailAddressQWERTY cu @ și .
ParolătextPasswordQWERTY, introducere ascunsă
TelefonphoneCifre cu +, #, *
PrețnumberDecimalCifre cu virgulă
CantitatenumberDoar cifre
ComentariutextCapSentences|textMultiLineQWERTY, multilinie
Căutaretext|textNoSuggestionsQWERTY fără sugestii
kotlin
// Combinația pentru câmpul preț
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Combinația pentru câmpul comentariu
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

Lucrul programatic cu InputType

Setarea InputType programatic prin setInputType() suprascrie valoarea anterioară. Dacă trebuie schimbată doar o parte a măștii (de exemplu, adăugarea unui flag), trebuie salvată valoarea curentă, modificată și aplicată din nou. Fiecare apel setInputType() reconfigură filtrele interne ale EditText.

Metoda setRawInputType() se deosebește de setInputType prin faptul că nu provoacă reconfigurarea filtrelor și sugestiilor. Este folosită pentru modificarea temporară a InputType fără reîncărcarea completă a stării EditText. După apelarea setInputType(), se recomandă repornirea IME pentru ca tastatura să se actualizeze.

Comutarea modurilor

kotlin
// Comutarea între parolă și text vizibil
fun togglePasswordVisibility(editText: EditText) {
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    editText.inputType = if (isPassword) {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // Păstrează poziția cursorului
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Extragerea clasei și variației

kotlin
// Obține clasa de intrare
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// Obține variația de intrare
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Verifică dacă este câmp de parolă
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

Cele mai bune practici de alegere a InputType

Alegerea corectă a InputType nu este doar despre UX, ci și despre securitate și corectitudinea datelor. Recomandările principale includ: specificați întotdeauna InputType explicit pentru fiecare EditText; utilizați cea mai specifică clasă de intrare; nu combinați flaguri din clase diferite; pentru câmpurile cu date sensibile utilizați variațiile PASSWORD; pentru câmpurile de căutare utilizați imeOptions=„actionSearch”.

InputType influențează și funcționarea serviciilor de accesibilitate (Accessibility). Câmpurile cu tipul textPassword beneficiază de protecție suplimentară față de cititoarele de ecran — acestea nu citesc cu voce tare caracterele introduse. Pentru câmpurile cu textEmailAddress, Screen Reader îl informează pe utilizator că câmpul este destinat emailului și oferă sugestii corespunzătoare.

  • Explicitarea — setează întotdeauna InputType explicit, nu te baza pe valoarea implicită (textMultiLine).
  • Specificitatea — folosește cel mai specific tip: textEmailAddress, nu text pentru email.
  • Securitatea — pentru parole, PIN și date ale cardurilor utilizează variațiile PASSWORD.
  • Autocompletarea — combină InputType cu autofillHints pentru suportarea managerilor de parole.
  • Testarea — verifică comportamentul pe diferite tastaturi (Gboard, SwiftKey, Samsung Keyboard).

Conform Material Design Guidelines (2025), InputType trebuie să corespundă tipului de date pe care utilizatorul le introduce. Un InputType incorect nu doar încetinește introducerea, dar poate duce și la erori: de exemplu, dacă pentru introducerea numărului de telefon se lasă textMultiLine, tastatura nu va afișa blocul numeric, iar utilizatorul va fi nevoit să schimbe manual aspectul de fiecare dată.

Întrebări frecvente

Cu ce se deosebește InputType de Keyboard Type?

InputType — este un atribut EditText care determină tipul datelor introduse printr-o mască binară. Keyboard Type — este denumirea neoficială pentru tipul vizual al tastaturii care este activat de InputType. InputType influențează și filtrarea caracterelor, autocorectarea și autocompletarea, nu doar aspectul tastaturii.

Cum se resetează InputType la valoarea implicită?

Setează editText.inputType = InputType.TYPE_CLASS_TEXT sau folosește constanta InputType.TYPE_NULL (0x00000000) pentru resetare completă. Cu TYPE_NULL câmpul nu va afișa tastatura la focus. Pentru revenirea la introducerea standard de text, setează TYPE_CLASS_TEXT fără flaguri.

Se poate crea un InputType personalizat?

Nu se poate crea o nouă clasă InputType, deoarece face parte din framework-ul Android. Cu toate acestea, poți combina clasele și flagurile existente pentru a obține comportamentul dorit. Filtrarea suplimentară a caracterelor se implementează prin InputFilter, care se setează pe EditText prin metoda setFilters().

Cum influențează InputType IME (tastatura)?

InputType este transmis sistemului de intrare prin InputConnection. IME citește clasa și variația InputType și selectează aspectul corespunzător al tastaturii. De exemplu, TYPE_CLASS_NUMBER cu TYPE_NUMBER_FLAG_DECIMAL face ca tastatura să afișeze blocul numeric cu virgulă. Majoritatea tastaturilor moderne respectă aceste recomandări.

Cum se verifică InputType în runtime?

Folosește proprietatea editText.inputType în Kotlin sau metoda editText.getInputType() în Java. Pentru extragerea clasei aplică masca: inputType and InputType.TYPE_MASK_CLASS. Pentru verificarea unui flag specific: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — dacă rezultatul != 0, flagul este setat.

Rezumat

  • InputType — mască binară formată din clasa de intrare (TEXT, NUMBER, PHONE, DATETIME) și modificatori.
  • Clasa de intrare determină tipul de bază al datelor și tipul tastaturii afișate.
  • Modificatorii specifică comportamentul: multilinie, autocorectare, litere mari, introducere ascunsă.
  • Combinarea prin SAU binar permite crearea de configurații precise pentru diferite scenarii.
  • Variațiile PASSWORD dezactivează autocorectarea, ascund caracterele și previn înscrierea în dicționar.
  • Setarea programatică prin setInputType() necesită repornirea IME pentru actualizarea tastaturii.
  • Cele mai bune practici — setează InputType explicit, folosește tipuri specifice și testează pe diferite tastaturi.

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.

Discutați proiectul

Citiți și