EditText: ce este, atribute și lucrul cu câmpul de intrare în Android

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

EditText — este o componentă de bază Android destinată introducerii și editării textului în interfața utilizatorului. Moștenește din TextView și oferă posibilitatea introducerii caracterelor de la tastatura virtuală sau fizică. EditText suportă multiple moduri: text pe unul sau mai multe rânduri, parole, numere, adrese de e-mail și numere de telefon. Conform Android Developers (2026), EditText este utilizat în peste 90% din aplicațiile Android pentru crearea de formulare, câmpuri de căutare, chat-uri și ecrane de introducere a datelor.

Puncte cheie

  • EditText — componenta de bază pentru introducerea textului în Android, moștenitor al TextView.
  • Moduri de introducere — suportă text, numere, parole, e-mail, telefon și introducere pe mai multe rânduri.
  • Atribute XML — configurare prin inputType, maxLines, hint, textColorHint și alți parametri.
  • Ascultători — TextWatcher pentru urmărirea modificărilor și OnEditorActionListener pentru gestionarea acțiunilor.
  • Material Design — TextInputLayout extinde EditText cu etichetă plutitoare și mesaje de eroare.

Ce este EditText în Android

EditText — este o clasă din pachetul android.widget care implementează un câmp text interactiv pentru introducerea datelor de către utilizator. În ierarhia de moștenire Android EditText extends TextView, deci moștenește toate proprietățile etichetei text, inclusiv gestionarea fonturilor, culorilor și alinierii. Diferența principală între EditText și TextView constă în posibilitatea de editare a conținutului — utilizatorul poate introduce, șterge și modifica textul direct în interfață.

Fiecare EditText este asociat cu o instanță Editable care stochează textul introdus și suportă operații de inserare, ștergere și înlocuire a caracterelor. La introducerea textului, EditText gestionează automat poziția cursorului, selectarea textului și istoricul modificărilor pentru undo/redo. Conform Android Developers Guide (2026), EditText suportă și autocompletarea prin clasa AutoCompleteTextView care moștenește din EditText.

Arhitectura EditText este construită pe separarea modelului (Editable), vederii (TextView) și controlerului (InputConnection). La primirea focusului, EditText creează un InputConnection prin care sistemul de introducere transmite caractere, apăsări de taste și comenzi de editare. Acest mecanism asigură compatibilitatea cu orice metode de introducere — de la tastaturi virtuale la tastaturi fizice Bluetooth și introducere vocală.

kotlin
val editText = EditText(context).apply {
    hint = "Introduceți textul"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

Atributele de bază ale EditText

EditText oferă zeci de atribute pentru reglarea fină a comportamentului și aspectului. Acestea pot fi setate atât în layout-ul XML, cât și programatic prin Kotlin sau Java. Atributele se împart în categorii: gestionarea textului, restricții, aspect vizual și interacțiunea cu tastatura.

AtributDescriereExemplu valoare
android:hintTextul sugestiv afișat în câmpul gol„Introduceți e-mailul"
android:inputTypeModul de introducere (text, număr, parolă etc.)textEmailAddress
android:maxLinesNumărul maxim de rânduri3
android:maxLengthLungimea maximă a textului în caractere100
android:textColorHintCuloarea textului sugestiv#999999

Atributul android:hint este unul dintre cele mai importante — informează utilizatorul ce date sunt așteptate în câmp. La introducerea textului, hint se ascunde automat. Hint nu participă la trimiterea formularului și nu se salvează ca valoare a câmpului. Material Design recomandă utilizarea TextInputLayout cu etichetă plutitoare în loc de hint simplu pentru un aspect mai modern.

  • android:selectAllOnFocus — selectează tot textul la primirea focusului (util pentru câmpurile de căutare).
  • android:maxLength — limitează numărul de caractere introduse, tăind excesul.
  • android:lines — setează înălțimea fixă a câmpului în rânduri (spre deosebire de minLines).
  • android:gravity — alinierea textului în interiorul câmpului: left, center, top etc.
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

Modurile de introducere și inputType

Atributul inputType determină ce tip de tastatură va fi afișată utilizatorului și ce caractere sunt permise pentru introducere. Reprezintă o mască de biți, unde clasa de introducere (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) este combinată cu modificatori.

Fiecare mod de introducere nu doar schimbă aspectul tastaturii, ci influențează și procesarea textului: în modul numeric sunt permise doar cifre și separatorul zecimal, în modul e-mail este disponibil simbolul @ și extensiile de domeniu, iar în modul telefon sunt afișate cifre și simbolurile +, #, *. Alegerea corectă a inputType are un impact critic asupra experienței utilizatorului — o tastatură nepotrivită obligă utilizatorul să comute modurile, ceea ce crește timpul de completare a formularului cu 30–50%.

Conform Material Design Guidelines (2025), se recomandă utilizarea celui mai specific inputType pentru fiecare câmp: textPassword pentru parole, numberDecimal pentru prețuri, phone pentru numere de telefon, textMultiLine pentru introducere pe mai multe rânduri. Aceasta accelerează completarea formularelor și reduce numărul de erori de introducere.

kotlin
// Configurarea programatică a inputType
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Ascultătorii EditText: TextWatcher și OnEditorActionListener

TextWatcher — este o interfață pentru urmărirea modificărilor textului în EditText în timp real. Conține trei metode: beforeTextChanged este apelată înainte de modificare, onTextChanged — în timpul modificării, afterTextChanged — după finalizarea modificării textului. TextWatcher este utilizat pentru validarea intrării, numărarea caracterelor, căutare și autocompletare.

OnEditorActionListener gestionează acțiunile utilizatorului pe tastatură: apăsarea butonului Done (IME_ACTION_DONE), căutare (IME_ACTION_SEARCH), trimitere (IME_ACTION_SEND), trecerea la câmpul următor (IME_ACTION_NEXT) și altele. Acest ascultător este deosebit de util pentru organizarea navigării în formular — la apăsarea Next, focusul trece automat la următorul câmp, iar la apăsarea Done, tastatura se ascunde și se efectuează trimiterea.

Conform Android Developers Blog (2025), utilizarea corectă a OnEditorActionListener cu atributul android:imeOptions permite crearea de formulare intuitive fără butoane suplimentare de trimitere — utilizatorul completează câmpurile și apasă Done pe tastatură, ceea ce declanșează salvarea sau căutarea.

kotlin
// TextWatcher pentru validarea e-mailului
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// OnEditorActionListener pentru trimiterea formularului
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Exemple de cod cu EditText

Să examinăm un exemplu complet de creare a unui ecran de autentificare folosind EditText pentru introducerea e-mailului și parolei. În acest exemplu sunt prezentate configurarea inputType, validarea prin TextWatcher și gestionarea apăsării butonului de autentificare.

Layout-ul XML al ecranului de autentificare

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

Configurarea programatică a EditText

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

Stilizarea EditText

EditText suportă personalizarea prin atribute XML, teme și stiluri. Se poate modifica culoarea textului, culoarea sugestiei, culoarea sublinierii (backgroundTint), stilul fontului, dimensiunea textului și multe altele. Material Components oferă tema MaterialComponents. EditText cu atribute personalizate, inclusiv boxStrokeColor, boxBackgroundColor și endIconMode.

Pentru modificarea culorii sublinierii EditText se folosește atributul android:backgroundTint, care setează culoarea pentru starea implicită și pentru starea de focus. În Material Design, culoarea sublinierii este gestionată prin colorPrimary al temei. Pentru personalizare completă se poate crea un drawable propriu pentru fundal în folderul res/drawable.

StilAtributRezultat
Culoarea textuluiandroid:textColorSchimbă culoarea textului introdus
Culoarea hintandroid:textColorHintSchimbă culoarea textului sugestiv
Subliniereandroid:backgroundTintSchimbă culoarea liniei sub câmp
Dimensiune fontandroid:textSizeSetează dimensiunea textului în sp
Fontandroid:fontFamilyConectează un font personalizat

Pentru crearea unui stil unitar al tuturor EditText din aplicație se recomandă definirea unui stil global în temă. Material Design oferă stilul Widget.MaterialComponents.TextInputLayout.OutlinedBox care se aplică automat tuturor câmpurilor de introducere ce folosesc TextInputLayout. Aceasta asigură un aspect consistent fără duplicarea atributelor în fiecare layout.

Întrebări frecvente

Care este diferența între EditText și TextView?

EditText moștenește din TextView și adaugă posibilitatea de editare a textului. TextView doar afișează textul, iar EditText permite utilizatorului să introducă, să șteargă și să modifice conținutul. EditText suportă, de asemenea, inputType, TextWatcher, gestionarea cursorului și alte funcții legate de introducerea datelor.

Cum se interzice introducerea anumitor caractere în EditText?

Folosește InputFilter — o interfață pentru filtrarea caracterelor introduse. EditText suportă setarea unui tablou de filtre prin metoda setFilters(). De exemplu, InputFilter.LengthFilter limitează lungimea textului, iar un InputFilter personalizat poate interzice anumite caractere, expresii regulate sau intervale Unicode.

Cum se obține textul din EditText în cod?

Apelează metoda editText.text.toString() în Kotlin sau editText.getText().toString() în Java. Proprietatea text returnează un Editable care este convertit în String prin toString(). Este important să verifici textul pentru null și gol înainte de utilizare, în special în formulare cu câmpuri obligatorii.

Cum se face EditText pe mai multe rânduri?

Setează atributul android:inputType="textMultiLine" sau adaugă programatic flag-ul InputType.TYPE_TEXT_FLAG_MULTI_LINE. În modul pe mai multe rânduri, EditText permite întreruperea rândului cu Enter și crește automat în înălțime. Pentru limitarea înălțimii folosește android:maxLines sau android:minLines.

Cum se dezactivează EditText pentru editare?

Setează atributul android:enabled="false" sau apelează editText.isEnabled = false în cod. EditText dezactivat nu reacționează la atingeri, nu primește focus și se afișează în culoare gri (starea disabled). Alternativa este utilizarea android:focusable="false", care dezactivează introducerea, dar păstrează aspectul normal.

Rezumat

  • EditText — componenta de bază pentru introducerea textului în Android, moștenitor al TextView cu suport de editare.
  • inputType determină modul tastaturii și caracterele permise: text, număr, e-mail, telefon, parolă.
  • TextWatcher permite urmărirea modificărilor textului în timp real pentru validare și autocompletare.
  • OnEditorActionListener gestionează acțiunile tastaturii: Done, Search, Next, Send.
  • InputFilter limitează caracterele introduse și lungimea textului prin filtre personalizate.
  • Atributele hint, maxLines, maxLength, textColorHint configurează comportamentul și aspectul câmpului.
  • Material Design stilizarea prin TextInputLayout asigură un aspect modern cu etichetă plutitoare și erori.

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