EditText — egy alap Android komponens, amely szöveg bevitelére és szerkesztésére szolgál a felhasználói felületen. A TextView-ből származik, és lehetőséget biztosít karakterek bevitelére virtuális vagy fizikai billentyűzetről. Az EditText számos módot támogat: egysoros és többsoros szöveg, jelszavak, számok, e-mail címek és telefonszámok. A Android Developers (2026) szerint az EditText az Android alkalmazások több mint 90%-ában használatos űrlapok, keresőmezők, csevegések és adatbeviteli képernyők létrehozására.
Főbb pontok
EditText — az android.widget csomagból származó osztály, amely egy interaktív szöveges mezőt valósít meg a felhasználói adatbevitelhez. Az Android öröklődési hierarchiában EditText extends TextView, így örökli a szöveges címke összes tulajdonságát, beleértve a betűtípusok, színek és igazítás kezelését. A fő különbség az EditText és a TextView között a tartalom szerkeszthetősége — a felhasználó közvetlenül a felületen vihet be, törölhet és módosíthat szöveget.
Minden EditText egy Editable példányhoz kapcsolódik, amely tárolja a bevitt szöveget és támogatja a karakterek beszúrását, törlését és cseréjét. Szövegbevitelkor az EditText automatikusan kezeli a kurzor pozícióját, a szöveg kijelölését és a változtatások előzményeit a visszavonáshoz (undo/redo). A Android Developers Guide (2026) szerint az EditText támogatja az automatikus kiegészítést az AutoCompleteTextView osztályon keresztül, amely az EditText-ből származik.
Az EditText architektúrája a modell (Editable), nézet (TextView) és vezérlő (InputConnection) szétválasztására épül. Fókusz elérésekor az EditText létrehoz egy InputConnection-t, amelyen keresztül a beviteli rendszer karaktereket, billentyűleütéseket és szerkesztési parancsokat továbbít. Ez a mechanizmus biztosítja a kompatibilitást bármilyen beviteli módszerrel — a virtuális billentyűzetektől a fizikai Bluetooth billentyűzetekig és a hangbemenetig.
val editText = EditText(context).apply {
hint = "Írja be a szöveget"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText több tucat attribútumot kínál a viselkedés és megjelenés pontos beállításához. Ezek beállíthatók mind az XML elrendezésben, mind programozottan Kotlin vagy Java segítségével. Az attribútumok kategóriákra oszlanak: szövegkezelés, korlátozások, vizuális megjelenés és billentyűzettel való interakció.
| Attribútum | Leírás | Példa érték |
|---|---|---|
| android:hint | Segédszöveg, amely az üres mezőben jelenik meg | „Adja meg az e-mailt" |
| android:inputType | Beviteli mód (szöveg, szám, jelszó stb.) | textEmailAddress |
| android:maxLines | Maximális sorok száma | 3 |
| android:maxLength | Maximális szöveghossz karakterekben | 100 |
| android:textColorHint | A segédszöveg színe | #999999 |
Az android:hint attribútum az egyik legfontosabb — tájékoztatja a felhasználót, hogy milyen adatok várhatók a mezőben. Szöveg beírásakor a hint automatikusan eltűnik. A hint nem vesz részt az űrlap elküldésében és nem tárolódik mezőértékként. A Material Design a lebegő címkével ellátott TextInputLayout használatát javasolja az egyszerű hint helyett a modernebb megjelenés érdekében.
<!-- 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" />
Az inputType attribútum határozza meg, hogy milyen típusú billentyűzet jelenjen meg a felhasználónak, és mely karakterek engedélyezettek a bevitelhez. Ez egy bitmaszk, ahol a beviteli osztály (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) módosítókkal van kombinálva.
Minden beviteli mód nemcsak a billentyűzet elrendezését változtatja meg, hanem befolyásolja a szöveg feldolgozását is: numerikus módban csak számok és tizedes elválasztó engedélyezett, e-mail módban elérhető a @ szimbólum és domain kiterjesztések, telefon módban pedig számok és a +, #, * szimbólumok jelennek meg. A megfelelő inputType kiválasztása kritikus hatással van a felhasználói élményre — a nem megfelelő billentyűzet módváltásra kényszeríti a felhasználót, ami 30–50%-kal növeli az űrlap kitöltési idejét.
A Material Design Guidelines (2025) szerint ajánlott a lehető legspecifikusabb inputType használata minden mezőhöz: textPassword jelszavakhoz, numberDecimal árakhoz, phone telefonszámokhoz, textMultiLine többsoros bevitelhez. Ez felgyorsítja az űrlapok kitöltését és csökkenti a beviteli hibák számát.
// Programozott inputType beállítás
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher — egy interfész az EditText szövegváltozásainak valós idejű követésére. Három metódust tartalmaz: a beforeTextChanged a változás előtt hívódik meg, az onTextChanged — a változás közben, az afterTextChanged — a szövegváltozás befejezése után. A TextWatcher-t bevitel érvényesítésére, karakterszámlálásra, keresésre és automatikus kiegészítésre használják.
OnEditorActionListener kezeli a felhasználó billentyűzeten végzett műveleteit: a Done (IME_ACTION_DONE), keresés (IME_ACTION_SEARCH), küldés (IME_ACTION_SEND), következő mezőre lépés (IME_ACTION_NEXT) gombok megnyomását és másokat. Ez a figyelő különösen hasznos az űrlap navigáció megszervezéséhez — a Next megnyomásakor a fókusz automatikusan a következő mezőre ugrik, a Done megnyomásakor pedig a billentyűzet elrejtésre kerül és a küldés megtörténik.
A Android Developers Blog (2025) szerint az OnEditorActionListener helyes használata az android:imeOptions attribútummal lehetővé teszi intuitív űrlapok létrehozását további küldő gombok nélkül — a felhasználó kitölti a mezőket és megnyomja a Done-t a billentyűzeten, ami elindítja a mentést vagy keresést.
// TextWatcher e-mail érvényesítéshez
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 űrlap elküldéséhez
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
Nézzünk meg egy teljes példát egy bejelentkezési képernyő létrehozására EditText használatával e-mail és jelszó beviteléhez. Ebben a példában bemutatásra kerül az inputType konfigurációja, a TextWatcher-en keresztüli érvényesítés és a bejelentkezési gomb megnyomásának kezelése.
@+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 támogatja a testreszabást XML attribútumokon, témákon és stílusokon keresztül. Módosítható a szöveg színe, a segédszöveg színe, az aláhúzás színe (backgroundTint), a betűtípus stílusa, a szöveg mérete és még sok más. A Material Components biztosítja a MaterialComponents. EditText témát egyéni attribútumokkal, beleértve a boxStrokeColor, boxBackgroundColor és endIconMode elemeket.
Az EditText aláhúzásának színének módosításához az android:backgroundTint attribútumot használják, amely beállítja a színt az alapértelmezett állapothoz és a fókusz állapothoz. A Material Design-ben az aláhúzás színét a téma colorPrimary tulajdonsága kezeli. Teljes testreszabáshoz létrehozható egy egyedi drawable a háttérhez a res/drawable mappában.
| Stílus | Attribútum | Eredmény |
|---|---|---|
| Szöveg színe | android:textColor | Megváltoztatja a bevitt szöveg színét |
| Hint színe | android:textColorHint | Megváltoztatja a segédszöveg színét |
| Aláhúzás | android:backgroundTint | Megváltoztatja a mező alatti vonal színét |
| Betűméret | android:textSize | Beállítja a szöveg méretét sp-ben |
| Betűtípus | android:fontFamily | Egyedi betűtípust csatlakoztat |
Az alkalmazás összes EditText-jének egységes stílusának létrehozásához ajánlott globális stílust definiálni a témában. A Material Design a Widget.MaterialComponents.TextInputLayout.OutlinedBox stílust kínálja, amely automatikusan alkalmazódik minden TextInputLayout-ot használó beviteli mezőre. Ez konzisztens megjelenést biztosít az attribútumok minden elrendezésben történő megkettőzése nélkül.
Gyakran ismételt kérdések
EditText a TextView-ből származik és hozzáadja a szöveg szerkesztésének lehetőségét. A TextView csak megjeleníti a szöveget, míg az EditText lehetővé teszi a felhasználó számára a tartalom bevitelét, törlését és módosítását. Az EditText emellett támogatja az inputType-ot, TextWatcher-t, kurzorkezelést és más adatbevitellel kapcsolatos funkciókat.
Használja az InputFilter — egy interfészt a bevitt karakterek szűréséhez. Az EditText támogatja a szűrők tömbjének beállítását a setFilters() metóduson keresztül. Például az InputFilter.LengthFilter korlátozza a szöveg hosszát, és egy egyedi InputFilter megtilthat bizonyos karaktereket, reguláris kifejezéseket vagy Unicode tartományokat.
Hívja meg a editText.text.toString() metódust Kotlinban vagy a editText.getText().toString() metódust Java-ban. A text tulajdonság egy Editable-t ad vissza, amely a toString()-en keresztül Stringgé alakul. Fontos a szöveg ellenőrzése null és üresség szempontjából használat előtt, különösen a kötelező mezőket tartalmazó űrlapoknál.
Állítsa be az android:inputType="textMultiLine" attribútumot, vagy adja hozzá programozottan az InputType.TYPE_TEXT_FLAG_MULTI_LINE zászlót. Többsoros módban az EditText lehetővé teszi a sortörést Enter-rel, és automatikusan növekszik magasságban. A magasság korlátozásához használja az android:maxLines vagy android:minLines attribútumot.
Állítsa be az android:enabled="false" attribútumot, vagy hívja meg a editText.isEnabled = false kódban. A letiltott EditText nem reagál az érintésekre, nem kap fókuszt, és szürke színben jelenik meg (disabled state). Alternatíva az android:focusable="false" használata, amely letiltja a bevitelt, de megtartja a normál megjelenést.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is