EditText: шта је то, атрибути и рад са пољем за унос у Android-у

Аутор: IT Sectr Објављено: 2026-07-07 Време читања: 9 мин

EditText — основни Android компонент намењен за унос и уређивање текста у корисничком интерфејсу. Наслеђује TextView и пружа могућност уноса знакова са виртуелне или физичке тастатуре. EditText подржава мноштво режима: једноредни и вишередни текст, лозинке, бројеве, адресе е-поште и телефонске бројеве. Према Android Developers (2026), EditText се користи у више од 90% Android апликација за креирање форми, поља за претрагу, ћаскања и екрана за унос података.

Главно

  • EditText — основни компонент за унос текста у Android-у, наследник TextView.
  • Режими уноса — подржава текст, бројеве, лозинке, е-пошту, телефон и вишередни унос.
  • XML атрибути — подешавање кроз inputType, maxLines, hint, textColorHint и друге параметре.
  • Ослушкивачи — TextWatcher за праћење промена и OnEditorActionListener за обраду радњи.
  • Material Design — TextInputLayout проширује EditText плутајућом ознаком и порукама о грешкама.

Шта је EditText у Android-у

EditText — класа из пакета android.widget која имплементира интерактивно текстуално поље за унос података од стране корисника. У хијерархији наслеђивања Android EditText extends TextView, стога наслеђује сва својства текстуалне ознаке, укључујући управљање фонтовима, бојама и поравнањем. Главна разлика између EditText-а и TextView-а је могућност уређивања садржаја — корисник може уносити, брисати и мењати текст директно у интерфејсу.

Сваки EditText је повезан са инстанцом Editable која чува унети текст и подржава операције уметања, брисања и замене знакова. Приликом уноса текста, EditText аутоматски управља позицијом курсора, селекцијом текста и историјом промена за опозив (undo/redo). Према Android Developers Guide (2026), EditText такође подржава аутоматско довршавање кроз класу AutoCompleteTextView која наслеђује EditText.

Архитектура EditText-а је изграђена на раздвајању модела (Editable), приказа (TextView) и контролера (InputConnection). При добијању фокуса, EditText креира InputConnection кроз који систем за унос преноси знакове, притиске тастера и команде за уређивање. Овај механизам обезбеђује компатибилност са било којим методама уноса — од виртуелних тастатура до физичких Bluetooth тастатура и гласовног уноса.

kotlin
val editText = EditText(context).apply {
    hint = "Унесите текст"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

Основни атрибути EditText-а

EditText пружа десетине атрибута за прецизно подешавање понашања и изгледа. Могу се поставити како у XML распореду, тако и програмски кроз Kotlin или Java. Атрибути се деле у категорије: управљање текстом, ограничења, визуелни изглед и интеракција са тастатуром.

АтрибутОписПример вредности
android:hintТекст назнаке приказан у празном пољу„Унесите е-пошту"
android:inputTypeРежим уноса (текст, број, лозинка итд.)textEmailAddress
android:maxLinesМаксималан број редова3
android:maxLengthМаксимална дужина текста у знаковима100
android:textColorHintБоја текста назнаке#999999

Атрибут android:hint је један од најважнијих — обавештава корисника који подаци се очекују у пољу. Приликом уноса текста, hint се аутоматски скрива. Hint не учествује у слању форме и не чува се као вредност поља. Material Design препоручује коришћење TextInputLayout-а са плутајућом ознаком уместо обичног hint-а за модернији изглед.

  • android:selectAllOnFocus — бира цео текст при добијању фокуса (згодно за поља за претрагу).
  • android:maxLength — ограничава број унетих знакова, одсецајући вишак.
  • android:lines — поставља фиксну висину поља у редовима (за разлику од minLines).
  • android:gravity — поравнање текста унутар поља: left, center, top итд.
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" />

Режими уноса и inputType

Атрибут inputType одређује који тип тастатуре ће бити приказан кориснику и који знакови су дозвољени за унос. Представља битску маску где се класа уноса (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) комбинује са модификаторима.

Сваки режим уноса не само да мења распоред тастатуре, већ утиче и на обраду текста: у нумеричком режиму дозвољене су само цифре и децимални сепаратор, у режиму е-поште доступан је симбол @ и доменски наставци, а у телефонском режиму приказују се цифре и симболи +, #, *. Правилан избор inputType-а критично утиче на корисничко искуство — неодговарајућа тастатура приморава корисника да мења режиме, што повећава време попуњавања форме за 30–50%.

Према Material Design Guidelines (2025), препоручује се коришћење најспецифичнијег inputType-а за свако поље: textPassword за лозинке, numberDecimal за цене, phone за бројеве телефона, textMultiLine за вишередни унос. Ово убрзава попуњавање форми и смањује број грешака при уносу.

kotlin
// Програмско подешавање inputType-а
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Ослушкивачи EditText-а: TextWatcher и OnEditorActionListener

TextWatcher — интерфејс за праћење промена текста у EditText-у у реалном времену. Садржи три метода: beforeTextChanged се позива пре промене, onTextChanged — током промене, afterTextChanged — након завршетка промене текста. TextWatcher се користи за валидацију уноса, бројање знакова, претрагу и аутоматско довршавање.

OnEditorActionListener обрађује радње корисника на тастатури: притисак дугмета Done (IME_ACTION_DONE), претрага (IME_ACTION_SEARCH), слање (IME_ACTION_SEND), прелазак на следеће поље (IME_ACTION_NEXT) и друге. Овај ослушкивач је посебно користан за организовање навигације кроз форму — притиском на Next фокус аутоматски прелази на следеће поље, а притиском на Done тастатура се скрива и слање се извршава.

Према Android Developers Blog (2025), правилна употреба OnEditorActionListener-а са атрибутом android:imeOptions омогућава стварање интуитивних форми без додатних дугмади за слање — корисник попуњава поља и притиска Done на тастатури, што покреће чување или претрагу.

kotlin
// TextWatcher за валидацију е-поште
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 за слање форме
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Примери кода са EditText-ом

Размотримо комплетан пример креирања екрана за пријаву коришћењем EditText-а за унос е-поште и лозинке. У овом примеру приказано је подешавање inputType-а, валидација кроз TextWatcher и обрада притиска дугмета за пријаву.

XML распоред екрана за пријаву

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" />

Програмско подешавање 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
        }
    }
}

Стилизовање EditText-а

EditText подржава прилагођавање кроз XML атрибуте, теме и стилове. Могуће је мењати боју текста, боју назнаке, боју подвлачења (backgroundTint), стил фонта, величину текста и много тога. Material Components пружа тему MaterialComponents. EditText са прилагођеним атрибутима, укључујући boxStrokeColor, boxBackgroundColor и endIconMode.

За промену боје подвлачења EditText-а користи се атрибут android:backgroundTint који поставља боју за подразумевано стање и стање фокуса. У Material Design-у, боја подвлачења се управља кроз colorPrimary теме. За потпуно прилагођавање може се креирати сопствени drawable за позадину у фолдеру res/drawable.

СтилАтрибутРезултат
Боја текстаandroid:textColorМења боју унетог текста
Боја hintandroid:textColorHintМења боју текста назнаке
Подвлачењеandroid:backgroundTintМења боју линије испод поља
Величина фонтаandroid:textSizeПоставља величину текста у sp
Фонтandroid:fontFamilyПовезује прилагођени фонт

За креирање јединственог стила свих EditText-а у апликацији препоручује се дефинисање глобалног стила у теми. Material Design нуди стил Widget.MaterialComponents.TextInputLayout.OutlinedBox који се аутоматски примењује на сва поља за унос која користе TextInputLayout. Ово обезбеђује конзистентан изглед без дуплирања атрибута у сваком распореду.

Често постављана питања

Која је разлика између EditText-а и TextView-а?

EditText наслеђује TextView и додаје могућност уређивања текста. TextView само приказује текст, док EditText омогућава кориснику да уноси, брише и мења садржај. EditText такође подржава inputType, TextWatcher, управљање курсором и друге функције везане за унос података.

Како забранити унос одређених знакова у EditText?

Користи InputFilter — интерфејс за филтрирање унетих знакова. EditText подржава постављање низа филтера кроз метод setFilters(). На пример, InputFilter.LengthFilter ограничава дужину текста, а прилагођени InputFilter може забранити одређене знакове, регуларне изразе или Unicode опсеге.

Како добити текст из EditText-а у коду?

Позови метод editText.text.toString() у Kotlin-у или editText.getText().toString() у Java-и. Својство text враћа Editable који се конвертује у String кроз toString(). Важно је проверити текст на null и празнину пре употребе, посебно у формама са обавезним пољима.

Како направити EditText са више редова?

Постави атрибут android:inputType="textMultiLine" или програмски додај флаг InputType.TYPE_TEXT_FLAG_MULTI_LINE. У вишередном режиму EditText омогућава прелом реда са Enter и аутоматски се повећава по висини. За ограничавање висине користи android:maxLines или android:minLines.

Како онемогућити EditText за уређивање?

Постави атрибут android:enabled="false" или позови editText.isEnabled = false у коду. Онемогућени EditText не реагује на додире, не добија фокус и приказује се у сивој боји (disabled state). Алтернатива је коришћење android:focusable="false" које онемогућава унос, али задржава нормалан изглед.

Резиме

  • EditText — основни компонент за унос текста у Android-у, наследник TextView са подршком за уређивање.
  • inputType одређује режим тастатуре и дозвољене знакове: текст, број, е-пошта, телефон, лозинка.
  • TextWatcher омогућава праћење промена текста у реалном времену за валидацију и аутоматско довршавање.
  • OnEditorActionListener обрађује радње тастатуре: Done, Search, Next, Send.
  • InputFilter ограничава унете знакове и дужину текста кроз прилагођене филтере.
  • Атрибути hint, maxLines, maxLength, textColorHint подешавају понашање и изглед поља.
  • Material Design стилизовање кроз TextInputLayout обезбеђује модеран изглед са плутајућом ознаком и грешкама.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

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

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