EditText — основни Android компонент намењен за унос и уређивање текста у корисничком интерфејсу. Наслеђује TextView и пружа могућност уноса знакова са виртуелне или физичке тастатуре. EditText подржава мноштво режима: једноредни и вишередни текст, лозинке, бројеве, адресе е-поште и телефонске бројеве. Према Android Developers (2026), EditText се користи у више од 90% 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 тастатура и гласовног уноса.
val editText = EditText(context).apply {
hint = "Унесите текст"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
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-а за модернији изглед.
<!-- 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 одређује који тип тастатуре ће бити приказан кориснику и који знакови су дозвољени за унос. Представља битску маску где се класа уноса (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) комбинује са модификаторима.
Сваки режим уноса не само да мења распоред тастатуре, већ утиче и на обраду текста: у нумеричком режиму дозвољене су само цифре и децимални сепаратор, у режиму е-поште доступан је симбол @ и доменски наставци, а у телефонском режиму приказују се цифре и симболи +, #, *. Правилан избор inputType-а критично утиче на корисничко искуство — неодговарајућа тастатура приморава корисника да мења режиме, што повећава време попуњавања форме за 30–50%.
Према Material Design Guidelines (2025), препоручује се коришћење најспецифичнијег inputType-а за свако поље: textPassword за лозинке, numberDecimal за цене, phone за бројеве телефона, textMultiLine за вишередни унос. Ово убрзава попуњавање форми и смањује број грешака при уносу.
// Програмско подешавање inputType-а
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
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 на тастатури, што покреће чување или претрагу.
// 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-а за унос е-поште и лозинке. У овом примеру приказано је подешавање inputType-а, валидација кроз TextWatcher и обрада притиска дугмета за пријаву.
@+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" />
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 подржава прилагођавање кроз XML атрибуте, теме и стилове. Могуће је мењати боју текста, боју назнаке, боју подвлачења (backgroundTint), стил фонта, величину текста и много тога. Material Components пружа тему MaterialComponents. EditText са прилагођеним атрибутима, укључујући boxStrokeColor, boxBackgroundColor и endIconMode.
За промену боје подвлачења EditText-а користи се атрибут android:backgroundTint који поставља боју за подразумевано стање и стање фокуса. У Material Design-у, боја подвлачења се управља кроз colorPrimary теме. За потпуно прилагођавање може се креирати сопствени drawable за позадину у фолдеру res/drawable.
| Стил | Атрибут | Резултат |
|---|---|---|
| Боја текста | android:textColor | Мења боју унетог текста |
| Боја hint | android:textColorHint | Мења боју текста назнаке |
| Подвлачење | android:backgroundTint | Мења боју линије испод поља |
| Величина фонта | android:textSize | Поставља величину текста у sp |
| Фонт | android:fontFamily | Повезује прилагођени фонт |
За креирање јединственог стила свих EditText-а у апликацији препоручује се дефинисање глобалног стила у теми. Material Design нуди стил Widget.MaterialComponents.TextInputLayout.OutlinedBox који се аутоматски примењује на сва поља за унос која користе TextInputLayout. Ово обезбеђује конзистентан изглед без дуплирања атрибута у сваком распореду.
Често постављана питања
EditText наслеђује TextView и додаје могућност уређивања текста. TextView само приказује текст, док EditText омогућава кориснику да уноси, брише и мења садржај. EditText такође подржава inputType, TextWatcher, управљање курсором и друге функције везане за унос података.
Користи InputFilter — интерфејс за филтрирање унетих знакова. EditText подржава постављање низа филтера кроз метод setFilters(). На пример, InputFilter.LengthFilter ограничава дужину текста, а прилагођени InputFilter може забранити одређене знакове, регуларне изразе или Unicode опсеге.
Позови метод editText.text.toString() у Kotlin-у или editText.getText().toString() у Java-и. Својство text враћа Editable који се конвертује у String кроз toString(). Важно је проверити текст на null и празнину пре употребе, посебно у формама са обавезним пољима.
Постави атрибут android:inputType="textMultiLine" или програмски додај флаг InputType.TYPE_TEXT_FLAG_MULTI_LINE. У вишередном режиму EditText омогућава прелом реда са Enter и аутоматски се повећава по висини. За ограничавање висине користи android:maxLines или android:minLines.
Постави атрибут android:enabled="false" или позови editText.isEnabled = false у коду. Онемогућени EditText не реагује на додире, не добија фокус и приказује се у сивој боји (disabled state). Алтернатива је коришћење android:focusable="false" које онемогућава унос, али задржава нормалан изглед.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође