EditText — is een basiscomponent in Android voor het invoeren en bewerken van tekst in de gebruikersinterface. Het erft van TextView en biedt de mogelijkheid om tekens in te voeren via een virtueel of fysiek toetsenbord. EditText ondersteunt vele modi: een- en meerregelige tekst, wachtwoorden, nummers, e-mailadressen en telefoonnummers. Volgens Android Developers (2026) wordt EditText in meer dan 90% van de Android-apps gebruikt voor het maken van formulieren, zoekvelden, chats en gegevensinvoerschermen.
Belangrijkste punten
EditText — is een klasse uit het android.widget-pakket dat een interactief tekstveld implementeert voor gegevensinvoer door de gebruiker. In de overervingshiërarchie van Android EditText extends TextView, dus het erft alle eigenschappen van een tekstlabel, inclusief beheer van lettertypen, kleuren en uitlijning. Het belangrijkste verschil tussen EditText en TextView is de mogelijkheid om inhoud te bewerken — de gebruiker kan tekst rechtstreeks in de interface invoeren, verwijderen en wijzigen.
Elke EditText is gekoppeld aan een Editable-instantie die de ingevoerde tekst opslaat en bewerkingen ondersteunt voor het invoegen, verwijderen en vervangen van tekens. Bij het invoeren van tekst beheert EditText automatisch de cursorpositie, tekstselectie en wijzigingsgeschiedenis voor ongedaan maken (undo/redo). Volgens Android Developers Guide (2026) ondersteunt EditText ook automatisch aanvullen via de klasse AutoCompleteTextView die overerft van EditText.
De architectuur van EditText is gebaseerd op scheiding van model (Editable), weergave (TextView) en controller (InputConnection). Bij het verkrijgen van focus maakt EditText een InputConnection aan waarmee het invoersysteem tekens, toetsaanslagen en bewerkingsopdrachten doorgeeft. Dit mechanisme zorgt voor compatibiliteit met elke invoermethode — van virtuele toetsenborden tot fysieke Bluetooth-toetsenborden en spraakinvoer.
val editText = EditText(context).apply {
hint = "Voer tekst in"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText biedt tientallen attributen voor het nauwkeurig afstemmen van gedrag en uiterlijk. Deze kunnen zowel in de XML-layout als programmatisch via Kotlin of Java worden ingesteld. De attributen zijn onderverdeeld in categorieën: tekstbeheer, beperkingen, visuele weergave en interactie met het toetsenbord.
| Attribuut | Beschrijving | Voorbeeldwaarde |
|---|---|---|
| android:hint | Hinttekst weergegeven in een leeg veld | „Voer e-mail in" |
| android:inputType | Invoermodus (tekst, nummer, wachtwoord enz.) | textEmailAddress |
| android:maxLines | Maximum aantal regels | 3 |
| android:maxLength | Maximale tekstlengte in tekens | 100 |
| android:textColorHint | Kleur van de hinttekst | #999999 |
Het attribuut android:hint is een van de belangrijkste — het informeert de gebruiker welke gegevens in het veld worden verwacht. Bij het invoeren van tekst verdwijnt de hint automatisch. De hint doet niet mee aan het verzenden van het formulier en wordt niet opgeslagen als veldwaarde. Material Design beveelt het gebruik van TextInputLayout met een zwevend label aan in plaats van een gewone hint voor een modernere uitstraling.
<!-- 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" />
Het attribuut inputType bepaalt welk type toetsenbord aan de gebruiker wordt getoond en welke tekens zijn toegestaan voor invoer. Het is een bitmasker waarbij de invoerklasse (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) wordt gecombineerd met modifiers.
Elke invoermodus verandert niet alleen de toetsenbordindeling, maar beïnvloedt ook de tekstverwerking: in de numerieke modus zijn alleen cijfers en de decimale scheidingsteken toegestaan, in de e-mailmodus is het @-symbool en domeinextensies beschikbaar, en in de telefoonmodus worden cijfers en de symbolen +, #, * weergegeven. De juiste keuze van inputType heeft een kritieke invloed op de gebruikerservaring — een ongeschikt toetsenbord dwingt de gebruiker om modi te wisselen, wat de invultijd van het formulier met 30–50% verhoogt.
Volgens Material Design Guidelines (2025) wordt aanbevolen om voor elk veld de meest specifieke inputType te gebruiken: textPassword voor wachtwoorden, numberDecimal voor prijzen, phone voor telefoonnummers, textMultiLine voor meerregelige invoer. Dit versnelt het invullen van formulieren en vermindert het aantal invoerfouten.
// Programmatische inputType-instelling
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher — is een interface voor het in realtime volgen van tekstwijzigingen in EditText. Het bevat drie methoden: beforeTextChanged wordt aangeroepen vóór de wijziging, onTextChanged — tijdens de wijziging, afterTextChanged — nadat de tekstwijziging is voltooid. TextWatcher wordt gebruikt voor invoervalidatie, teken tellen, zoeken en automatisch aanvullen.
OnEditorActionListener handelt gebruikersacties op het toetsenbord af: indrukken van de Done-knop (IME_ACTION_DONE), zoeken (IME_ACTION_SEARCH), verzenden (IME_ACTION_SEND), naar het volgende veld gaan (IME_ACTION_NEXT) en andere. Deze listener is vooral handig voor het organiseren van formuliernavigatie — bij indrukken van Next gaat de focus automatisch naar het volgende veld, en bij indrukken van Done wordt het toetsenbord verborgen en wordt het verzenden uitgevoerd.
Volgens Android Developers Blog (2025) maakt correct gebruik van OnEditorActionListener met het attribuut android:imeOptions het mogelijk om intuïtieve formulieren te maken zonder extra verzendknoppen — de gebruiker vult de velden in en drukt op Done op het toetsenbord, waarna opslaan of zoeken wordt gestart.
// TextWatcher voor e-mailvalidatie
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 voor formulierverzending
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
Laten we een volledig voorbeeld bekijken van het maken van een inlogscherm met EditText voor het invoeren van e-mail en wachtwoord. In dit voorbeeld worden de inputType-configuratie, validatie via TextWatcher en verwerking van de inlogknop getoond.
@+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 ondersteunt aanpassing via XML-attributen, thema's en stijlen. De tekstkleur, hintkleur, onderstrepingskleur (backgroundTint), lettertypestijl, tekstgrootte en nog veel meer kunnen worden gewijzigd. Material Components biedt het thema MaterialComponents. EditText met aangepaste attributen, waaronder boxStrokeColor, boxBackgroundColor en endIconMode.
Voor het wijzigen van de onderstrepingskleur van EditText wordt het attribuut android:backgroundTint gebruikt, dat de kleur instelt voor de standaardstatus en de focusstatus. In Material Design wordt de onderstrepingskleur beheerd via colorPrimary van het thema. Voor volledige aanpassing kan een eigen drawable als achtergrond worden gemaakt in de map res/drawable.
| Stijl | Attribuut | Resultaat |
|---|---|---|
| Tekstkleur | android:textColor | Wijzigt de kleur van ingevoerde tekst |
| Hintkleur | android:textColorHint | Wijzigt de kleur van hinttekst |
| Onderstreping | android:backgroundTint | Wijzigt de kleur van de lijn onder het veld |
| Lettergrootte | android:textSize | Stelt de tekstgrootte in sp in |
| Lettertype | android:fontFamily | Koppelt een aangepast lettertype |
Voor het creëren van een uniforme stijl voor alle EditText in de app wordt aanbevolen een globale stijl in het thema te definiëren. Material Design biedt de stijl Widget.MaterialComponents.TextInputLayout.OutlinedBox die automatisch wordt toegepast op alle invoervelden die TextInputLayout gebruiken. Dit zorgt voor een consistente uitstraling zonder attributen te dupliceren in elke layout.
Veelgestelde vragen
EditText erft van TextView en voegt de mogelijkheid toe om tekst te bewerken. TextView geeft alleen tekst weer, terwijl EditText de gebruiker in staat stelt om inhoud in te voeren, te verwijderen en te wijzigen. EditText ondersteunt ook inputType, TextWatcher, cursorbesturing en andere functies met betrekking tot gegevensinvoer.
Gebruik InputFilter — een interface voor het filteren van ingevoerde tekens. EditText ondersteunt het instellen van een reeks filters via de methode setFilters(). InputFilter.LengthFilter beperkt bijvoorbeeld de tekstlengte, en een aangepaste InputFilter kan bepaalde tekens, reguliere expressies of Unicode-bereiken weren.
Roep de methode editText.text.toString() aan in Kotlin of editText.getText().toString() in Java. De eigenschap text retourneert een Editable die via toString() naar een String wordt geconverteerd. Het is belangrijk om de tekst te controleren op null en leegte voor gebruik, vooral in formulieren met verplichte velden.
Stel het attribuut android:inputType="textMultiLine" in of voeg programmatisch de vlag InputType.TYPE_TEXT_FLAG_MULTI_LINE toe. In de meerregelige modus staat EditText regelafbreking met Enter toe en wordt de hoogte automatisch vergroot. Gebruik android:maxLines of android:minLines om de hoogte te beperken.
Stel het attribuut android:enabled="false" in of roep editText.isEnabled = false aan in code. Uitgeschakelde EditText reageert niet op aanrakingen, krijgt geen focus en wordt in grijze kleur weergegeven (disabled state). Een alternatief is het gebruik van android:focusable="false", wat invoer uitschakelt maar het normale uiterlijk behoudt.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook