EditText: co to je, atributy a práce se vstupním polem v Androidu

Autor: IT Sectr Publikováno: 2026-07-07 Doba čtení: 9 min

EditText — je základní komponenta Android určená pro zadávání a úpravy textu v uživatelském rozhraní. Dědí z TextView a poskytuje možnost zadávání znaků z virtuální nebo fyzické klávesnice. EditText podporuje mnoho režimů: jednořádkový a víceřádkový text, hesla, čísla, e-mailové adresy a telefonní čísla. Podle Android Developers (2026) se EditText používá ve více než 90% Android aplikací pro vytváření formulářů, vyhledávacích polí, chatů a obrazovek pro zadávání dat.

Hlavní body

  • EditText — základní komponenta pro zadávání textu v Androidu, dědic TextView.
  • Režimy zadávání — podporuje text, čísla, hesla, e-mail, telefon a víceřádkové zadávání.
  • Atributy XML — konfigurace pomocí inputType, maxLines, hint, textColorHint a dalších parametrů.
  • Posluchače — TextWatcher pro sledování změn a OnEditorActionListener pro zpracování akcí.
  • Material Design — TextInputLayout rozšiřuje EditText o plovoucí štítek a chybové zprávy.

Co je EditText v Androidu

EditText — je třída z balíčku android.widget, která implementuje interaktivní textové pole pro zadávání dat uživatelem. V hierarchii dědičnosti Android EditText extends TextView, takže dědí všechny vlastnosti textového štítku, včetně správy písem, barev a zarovnání. Hlavní rozdíl mezi EditText a TextView spočívá v možnosti úpravy obsahu — uživatel může přímo v rozhraní zadávat, mazat a měnit text.

Každý EditText je propojen s instancí Editable, která ukládá zadaný text a podporuje operace vkládání, mazání a nahrazování znaků. Při zadávání textu EditText automaticky spravuje pozici kurzoru, výběr textu a historii změn pro undo/redo. Podle Android Developers Guide (2026) EditText také podporuje automatické doplňování prostřednictvím třídy AutoCompleteTextView, která dědí z EditText.

Architektura EditText je postavena na oddělení modelu (Editable), pohledu (TextView) a řadiče (InputConnection). Při získání fokusu EditText vytváří InputConnection, přes který systém zadávání předává znaky, stisky kláves a příkazy pro úpravy. Tento mechanismus zajišťuje kompatibilitu s libovolnými metodami zadávání — od virtuálních klávesnic po fyzické Bluetooth klávesnice a hlasové zadávání.

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

Základní atributy EditText

EditText poskytuje desítky atributů pro přesné nastavení chování a vzhledu. Lze je nastavit jak v XML rozvržení, tak programově pomocí Kotlin nebo Java. Atributy se dělí do kategorií: správa textu, omezení, vizuální vzhled a interakce s klávesnicí.

AtributPopisPříklad hodnoty
android:hintText nápovědy zobrazený v prázdném poli„Zadejte e-mail"
android:inputTypeRežim zadávání (text, číslo, heslo atd.)textEmailAddress
android:maxLinesMaximální počet řádků3
android:maxLengthMaximální délka textu ve znacích100
android:textColorHintBarva textu nápovědy#999999

Atribut android:hint je jedním z nejdůležitějších — informuje uživatele, jaká data se v poli očekávají. Při zadávání textu se hint automaticky skryje. Hint se neúčastní odesílání formuláře a neukládá se jako hodnota pole. Material Design doporučuje používat TextInputLayout s plovoucím štítkem místo obyčejného hint pro modernější vzhled.

  • android:selectAllOnFocus — vybere veškerý text při získání fokusu (užitečné pro vyhledávací pole).
  • android:maxLength — omezuje počet zadávaných znaků, ořezává přebytek.
  • android:lines — nastavuje pevnou výšku pole v řádcích (na rozdíl od minLines).
  • android:gravity — zarovnání textu uvnitř pole: left, center, top atd.
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" />

Režimy zadávání a inputType

Atribut inputType určuje, jaký typ klávesnice se uživateli zobrazí a jaké znaky jsou povoleny pro zadávání. Jedná se o bitovou masku, kde třída zadávání (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) je kombinována s modifikátory.

Každý režim zadávání nejen mění rozložení klávesnice, ale také ovlivňuje zpracování textu: v numerickém režimu jsou povoleny pouze číslice a desetinný oddělovač, v e-mailovém režimu je k dispozici symbol @ a doménové přípony, v telefonním režimu se zobrazují číslice a symboly +, #, *. Správná volba inputType má kritický dopad na uživatelský zážitek — nevhodná klávesnice nutí uživatele přepínat režimy, což zvyšuje čas vyplňování formuláře o 30–50%.

Podle Material Design Guidelines (2025) se doporučuje používat co nejkonkrétnější inputType pro každé pole: textPassword pro hesla, numberDecimal pro ceny, phone pro telefonní čísla, textMultiLine pro víceřádkové zadávání. To urychluje vyplňování formulářů a snižuje počet chyb při zadávání.

kotlin
// Programové nastavení inputType
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Posluchače EditText: TextWatcher a OnEditorActionListener

TextWatcher — je rozhraní pro sledování změn textu v EditText v reálném čase. Obsahuje tři metody: beforeTextChanged je volána před změnou, onTextChanged — během změny, afterTextChanged — po dokončení změny textu. TextWatcher se používá pro validaci vstupu, počítání znaků, vyhledávání a automatické doplňování.

OnEditorActionListener zpracovává akce uživatele na klávesnici: stisknutí tlačítka Done (IME_ACTION_DONE), vyhledávání (IME_ACTION_SEARCH), odeslání (IME_ACTION_SEND), přechod na další pole (IME_ACTION_NEXT) a další. Tento posluchač je zvláště užitečný pro organizaci navigace ve formuláři — při stisknutí Next se fokus automaticky přesune na další pole, při stisknutí Done se klávesnice skryje a provede se odeslání.

Podle Android Developers Blog (2025) umožňuje správné použití OnEditorActionListener s atributem android:imeOptions vytvářet intuitivní formuláře bez dalších tlačítek pro odeslání — uživatel vyplní pole a stiskne Done na klávesnici, což spustí uložení nebo vyhledávání.

kotlin
// TextWatcher pro validaci e-mailu
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 pro odeslání formuláře
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Příklady kódu s EditText

Podívejme se na úplný příklad vytvoření přihlašovací obrazovky s použitím EditText pro zadání e-mailu a hesla. V tomto příkladu je ukázána konfigurace inputType, validace pomocí TextWatcher a zpracování stisknutí tlačítka pro přihlášení.

XML rozvržení přihlašovací obrazovky

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

Programová konfigurace 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
        }
    }
}

Stylování EditText

EditText podporuje přizpůsobení pomocí XML atributů, motivů a stylů. Lze měnit barvu textu, barvu nápovědy, barvu podtržení (backgroundTint), styl písma, velikost textu a mnoho dalšího. Material Components poskytuje motiv MaterialComponents. EditText s vlastními atributy, včetně boxStrokeColor, boxBackgroundColor a endIconMode.

Pro změnu barvy podtržení EditText se používá atribut android:backgroundTint, který nastavuje barvu pro výchozí stav a stav fokusu. V Material Design je barva podtržení spravována pomocí colorPrimary motivu. Pro úplné přizpůsobení lze vytvořit vlastní drawable jako pozadí do složky res/drawable.

StylAtributVýsledek
Barva textuandroid:textColorZmění barvu zadaného textu
Barva hintandroid:textColorHintZmění barvu textu nápovědy
Podtrženíandroid:backgroundTintZmění barvu čáry pod polem
Velikost písmaandroid:textSizeNastaví velikost textu v sp
Písmoandroid:fontFamilyPřipojí vlastní písmo

Pro vytvoření jednotného stylu všech EditText v aplikaci se doporučuje definovat globální styl v motivu. Material Design nabízí styl Widget.MaterialComponents.TextInputLayout.OutlinedBox, který se automaticky aplikuje na všechna vstupní pole používající TextInputLayout. To zajišťuje konzistentní vzhled bez duplikování atributů v každém rozvržení.

Často kladené otázky

Jaký je rozdíl mezi EditText a TextView?

EditText dědí z TextView a přidává možnost úpravy textu. TextView pouze zobrazuje text, zatímco EditText umožňuje uživateli zadávat, mazat a měnit obsah. EditText také podporuje inputType, TextWatcher, správu kurzoru a další funkce související se zadáváním dat.

Jak zakázat zadávání určitých znaků v EditText?

Použijte InputFilter — rozhraní pro filtrování zadávaných znaků. EditText podporuje nastavení pole filtrů pomocí metody setFilters(). Například InputFilter.LengthFilter omezuje délku textu a vlastní InputFilter může zakázat určité znaky, regulární výrazy nebo rozsahy Unicode.

Jak získat text z EditText v kódu?

Zavolejte metodu editText.text.toString() v Kotlin nebo editText.getText().toString() v Java. Vlastnost text vrací Editable, který je převeden na String pomocí toString(). Je důležité zkontrolovat text na null a prázdnotu před použitím, zejména ve formulářích s povinnými poli.

Jak udělat EditText víceřádkový?

Nastavte atribut android:inputType="textMultiLine" nebo programově přidejte příznak InputType.TYPE_TEXT_FLAG_MULTI_LINE. Ve víceřádkovém režimu EditText umožňuje zalomení řádku klávesou Enter a automaticky se zvětšuje na výšku. Pro omezení výšky použijte android:maxLines nebo android:minLines.

Jak zakázat EditText pro úpravy?

Nastavte atribut android:enabled="false" nebo zavolejte editText.isEnabled = false v kódu. Zakázaný EditText nereaguje na dotyky, nezískává fokus a zobrazuje se v šedé barvě (disabled state). Alternativou je použití android:focusable="false", které zakáže zadávání, ale zachová normální vzhled.

Shrnutí

  • EditText — základní komponenta pro zadávání textu v Androidu, dědic TextView s podporou úprav.
  • inputType určuje režim klávesnice a povolené znaky: text, číslo, e-mail, telefon, heslo.
  • TextWatcher umožňuje sledování změn textu v reálném čase pro validaci a automatické doplňování.
  • OnEditorActionListener zpracovává akce klávesnice: Done, Search, Next, Send.
  • InputFilter omezuje zadávané znaky a délku textu pomocí vlastních filtrů.
  • Atributy hint, maxLines, maxLength, textColorHint konfigurují chování a vzhled pole.
  • Material Design stylování pomocí TextInputLayout zajišťuje moderní vzhled s plovoucím štítkem a chybami.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také