EditText: vad är det, attribut och arbete med inmatningsfältet i Android

Författare: IT Sectr Publicerad: 2026-07-07 Lästid: 9 min

EditText — är en grundläggande Android-komponent avsedd för inmatning och redigering av text i användargränssnittet. Den ärver från TextView och ger möjlighet att mata in tecken från ett virtuellt eller fysiskt tangentbord. EditText stöder flera lägen: en- och flerradig text, lösenord, nummer, e-postadresser och telefonnummer. Enligt Android Developers (2026) används EditText i mer än 90% av Android-applikationer för att skapa formulär, sökfält, chattar och datainmatningsskärmar.

Huvudpunkter

  • EditText — grundläggande komponent för textinmatning i Android, arvtagare till TextView.
  • Inmatningslägen — stöder text, nummer, lösenord, e-post, telefon och flerradig inmatning.
  • XML-attribut — konfiguration via inputType, maxLines, hint, textColorHint och andra parametrar.
  • Avlyssnare — TextWatcher för att spåra ändringar och OnEditorActionListener för att hantera åtgärder.
  • Material Design — TextInputLayout utökar EditText med flytande etikett och felmeddelanden.

Vad är EditText i Android

EditText — är en klass från paketet android.widget som implementerar ett interaktivt textfält för datainmatning av användaren. I arvshierarkin Android EditText extends TextView, så den ärver alla egenskaper hos en textetikett, inklusive hantering av typsnitt, färger och justering. Huvudskillnaden mellan EditText och TextView är möjligheten att redigera innehåll — användaren kan mata in, ta bort och ändra text direkt i gränssnittet.

Varje EditText är kopplad till en Editable-instans som lagrar den inmatade texten och stöder operationer för insättning, borttagning och ersättning av tecken. Vid textinmatning hanterar EditText automatiskt markörposition, textmarkering och ändringshistorik för ångra (undo/redo). Enligt Android Developers Guide (2026) stöder EditText också automatisk komplettering via klassen AutoCompleteTextView som ärver från EditText.

Arkitekturen för EditText är byggd på separation av modell (Editable), vy (TextView) och kontroller (InputConnection). När den får fokus skapar EditText en InputConnection genom vilken inmatningssystemet överför tecken, tangenttryckningar och redigeringskommandon. Denna mekanism säkerställer kompatibilitet med alla inmatningsmetoder — från virtuella tangentbord till fysiska Bluetooth-tangentbord och röstinmatning.

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

Grundläggande attribut för EditText

EditText erbjuder dussintals attribut för finjustering av beteende och utseende. De kan ställas in både i XML-layouten och programmatiskt via Kotlin eller Java. Attributen är indelade i kategorier: texthantering, begränsningar, visuellt utseende och interaktion med tangentbordet.

AttributBeskrivningExempelvärde
android:hintLedtext som visas i tomt fält“Ange e-post”
android:inputTypeInmatningsläge (text, nummer, lösenord etc.)textEmailAddress
android:maxLinesMaximalt antal rader3
android:maxLengthMaximal textlängd i tecken100
android:textColorHintFärg på ledtexten#999999

Attributet android:hint är ett av de viktigaste — det informerar användaren om vilka data som förväntas i fältet. När text matas in försvinner hint automatiskt. Hint deltar inte i formulärsändning och sparas inte som fältvärde. Material Design rekommenderar att använda TextInputLayout med flytande etikett istället för vanlig hint för ett modernare utseende.

  • android:selectAllOnFocus — markerar all text vid fokus (användbart för sökfält).
  • android:maxLength — begränsar antalet inmatade tecken, kapar överskott.
  • android:lines — ställer in fast fälthöjd i rader (till skillnad från minLines).
  • android:gravity — textjustering inuti fältet: left, center, top etc.
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" />

Inmatningslägen och inputType

Attributet inputType bestämmer vilken typ av tangentbord som ska visas för användaren och vilka tecken som är tillåtna för inmatning. Det är en bitmask där inmatningsklassen (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) kombineras med modifierare.

Varje inmatningsläge ändrar inte bara tangentbordslayouten utan påverkar också textbearbetningen: i numeriskt läge är endast siffror och decimalkomma tillåtna, i e-postläge är @-symbolen och domäntillägg tillgängliga, i telefonläge visas siffror och symbolerna +, #, *. Rätt val av inputType har en kritisk inverkan på användarupplevelsen — ett olämpligt tangentbord tvingar användaren att växla lägen, vilket ökar formulärets ifyllnadstid med 30–50%.

Enligt Material Design Guidelines (2025) rekommenderas att använda den mest specifika inputType för varje fält: textPassword för lösenord, numberDecimal för priser, phone för telefonnummer, textMultiLine för flerradig inmatning. Detta påskyndar formulärifyllning och minskar antalet inmatningsfel.

kotlin
// Programmatisk inputType-inställning
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

EditText-avlyssnare: TextWatcher och OnEditorActionListener

TextWatcher — är ett gränssnitt för att spåra textändringar i EditText i realtid. Det innehåller tre metoder: beforeTextChanged anropas före ändringen, onTextChanged — under ändringen, afterTextChanged — efter att textändringen slutförts. TextWatcher används för inmatningsvalidering, teckenräkning, sökning och automatisk komplettering.

OnEditorActionListener hanterar användarens åtgärder på tangentbordet: tryck på Done-knappen (IME_ACTION_DONE), sökning (IME_ACTION_SEARCH), sändning (IME_ACTION_SEND), övergång till nästa fält (IME_ACTION_NEXT) och andra. Denna avlyssnare är särskilt användbar för att organisera navigering i formulär — vid tryck på Next flyttas fokus automatiskt till nästa fält, och vid tryck på Done döljs tangentbordet och sändning utförs.

Enligt Android Developers Blog (2025) möjliggör korrekt användning av OnEditorActionListener med attributet android:imeOptions att skapa intuitiva formulär utan extra sändningsknappar — användaren fyller i fälten och trycker på Done på tangentbordet, vilket utlöser sparande eller sökning.

kotlin
// TextWatcher för e-postvalidering
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 för formulärsändning
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Kodexempel med EditText

Låt oss titta på ett komplett exempel på att skapa en inloggningsskärm med EditText för inmatning av e-post och lösenord. I detta exempel visas konfiguration av inputType, validering via TextWatcher och hantering av inloggningsknappen.

XML-layout för inloggningsskärmen

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

Programmatisk konfiguration av 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
        }
    }
}

Styla EditText

EditText stöder anpassning via XML-attribut, teman och stilar. Textfärg, ledtextfärg, understrykningsfärg (backgroundTint), teckensnittsstil, textstorlek och mycket mer kan ändras. Material Components tillhandahåller temat MaterialComponents. EditText med anpassade attribut, inklusive boxStrokeColor, boxBackgroundColor och endIconMode.

För att ändra understrykningsfärgen för EditText används attributet android:backgroundTint, som ställer in färgen för standardtillståndet och fokustillståndet. I Material Design hanteras understrykningsfärgen via temats colorPrimary. För fullständig anpassning kan en egen drawable skapas som bakgrund i mappen res/drawable.

StilAttributResultat
Textfärgandroid:textColorÄndrar färg på inmatad text
Hintfärgandroid:textColorHintÄndrar färg på ledtexten
Understrykningandroid:backgroundTintÄndrar färg på linjen under fältet
Teckenstorlekandroid:textSizeStäller in textstorlek i sp
Teckensnittandroid:fontFamilyAnsluter anpassat teckensnitt

För att skapa en enhetlig stil för alla EditText i applikationen rekommenderas att definiera en global stil i temat. Material Design erbjuder stilen Widget.MaterialComponents.TextInputLayout.OutlinedBox som automatiskt tillämpas på alla inmatningsfält som använder TextInputLayout. Detta säkerställer ett konsekvent utseende utan att duplicera attribut i varje layout.

Vanliga frågor

Vad är skillnaden mellan EditText och TextView?

EditText ärver från TextView och lägger till möjligheten att redigera text. TextView visar bara text medan EditText tillåter användaren att mata in, ta bort och ändra innehåll. EditText stöder också inputType, TextWatcher, markörhantering och andra funktioner relaterade till datainmatning.

Hur förbjuder man inmatning av vissa tecken i EditText?

Använd InputFilter — ett gränssnitt för att filtrera inmatade tecken. EditText stöder inställning av en array av filter via metoden setFilters(). Till exempel begränsar InputFilter.LengthFilter textlängden, och en anpassad InputFilter kan förbjuda vissa tecken, reguljära uttryck eller Unicode-intervall.

Hur får man text från EditText i kod?

Anropa metoden editText.text.toString() i Kotlin eller editText.getText().toString() i Java. Egenskapen text returnerar en Editable som konverteras till String via toString(). Det är viktigt att kontrollera texten för null och tomhet före användning, särskilt i formulär med obligatoriska fält.

Hur gör man EditText flerradig?

Ställ in attributet android:inputType="textMultiLine" eller lägg till flaggan InputType.TYPE_TEXT_FLAG_MULTI_LINE programmatiskt. I flerradigt läge tillåter EditText radbrytning med Enter och ökar automatiskt i höjd. För att begränsa höjden, använd android:maxLines eller android:minLines.

Hur inaktiverar man EditText för redigering?

Ställ in attributet android:enabled="false" eller anropa editText.isEnabled = false i kod. Inaktiverad EditText reagerar inte på beröring, får inte fokus och visas i grått (disabled state). Ett alternativ är att använda android:focusable="false", som inaktiverar inmatning men behåller normalt utseende.

Sammanfattning

  • EditText — grundläggande komponent för textinmatning i Android, arvtagare till TextView med redigeringsstöd.
  • inputType bestämmer tangentbordsläge och tillåtna tecken: text, nummer, e-post, telefon, lösenord.
  • TextWatcher möjliggör realtidsspårning av textändringar för validering och automatisk komplettering.
  • OnEditorActionListener hanterar tangentbordsåtgärder: Done, Search, Next, Send.
  • InputFilter begränsar inmatade tecken och textlängd via anpassade filter.
  • Attribut hint, maxLines, maxLength, textColorHint konfigurerar fältets beteende och utseende.
  • Material Design styling via TextInputLayout ger modernt utseende med flytande etikett och fel.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också