Keyboard Type — vad är det, typer av tangentbord och inställning av inmatning i Android

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

Keyboard Type — är konfigurationen av det virtuella tangentbordet i Android som bestämmer uppsättningen av visade tecken och layout för ett specifikt inmatningsfält. Android stöder många förinställda typer: text (standard text), number (numeriskt), phone (telefon), email (med @-tecken), textPassword (för lösenord), datetime och andra. Varje typ optimerar inmatningsgränssnittet för en specifik uppgift — till exempel visar e-posttangentbordet @-tecknet och punkten på huvudskärmen. Enligt uppgifter från Android Developers (2026) minskar rätt val av Keyboard Type antalet tryckningar vid inmatning med 20–40% jämfört med standardtexttangentbordet.

Huvudpunkter

  • Keyboard Type — tangentbordsläge som bestäms av attributet android:inputType i Android.
  • Huvudtyper — text, number, phone, email, textPassword, datetime för olika inmatningsscenarier.
  • Inmatningsoptimering — rätt tangentbordstyp snabbar upp ifyllning av formulär med 20–40%.
  • Kombination av flaggor — inputType kombinerar inmatningsklass och modifierare (flerradighet, autokorrigering).
  • IME options — attributet imeOptions hanterar åtgärdsknappen på tangentbordet (Done, Search, Next).

Vad är Keyboard Type i Android

Keyboard Type bestäms av värdet på attributet android:inputType i XML eller av det programmatiska anropet setInputType() i kod. InputType är en bitmask där inmatningsklassen (klass) kombineras med modifierarflaggor. Grundläggande klasser: TYPE_CLASS_TEXT för text, TYPE_CLASS_NUMBER för nummer, TYPE_CLASS_PHONE för telefoner, TYPE_CLASS_DATETIME för datum och tid.

Varje Keyboard Type påverkar tre aspekter: layouten av det virtuella tangentbordet (vilka tecken som syns på huvudskärmen), filtrering av inmatade tecken (vilka tecken som är tillåtna) och beteendet för autokorrigering/autokomplettering. Till exempel visar nummertangentbordet endast siffror och decimalavskiljare, och visar inte bokstäver, även om användaren byter läge. Enligt Android Developers Documentation (2026) gör kombinationen av klasser med flaggor det möjligt att skapa mycket specialiserade lägen: flerradig text med autokorrigering, flyttal, lösenord med möjlighet till autokomplettering.

Det är viktigt att förstå att Keyboard Type är en rekommendation till inmatningssystemet (IME). Vissa tangentbord från tredje part (Gboard, SwiftKey) kan delvis ignorera den angivna typen om användaren har konfigurerat egna preferenser. De flesta standard Android-tangentbord och Google Gboard följer dock strikt den angivna inmatningstypen.

kotlin
// Programmatisk inställning av tangentbordstyp
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — standard texttangentbord

TYPE_CLASS_TEXT — grundklassen för textinmatning. Aktiverar standard QWERTY-tangentbordet med bokstäver, siffror och symboler. Klassen Text har flest modifierare som preciserar beteendet: TYPE_TEXT_FLAG_CAP_SENTENCES (automatisk stor bokstav i början av mening), TYPE_TEXT_FLAG_AUTO_CORRECT (autokorrigering), TYPE_TEXT_FLAG_MULTI_LINE (flerradsläge), TYPE_TEXT_FLAG_NO_SUGGESTIONS (avaktivering av förslag).

Modifierare för texttangentbordet kan kombineras för att skapa en exakt konfiguration: till exempel är text|textCapSentences|textAutoCorrect lämplig för ett kommentarsfält där automatisk stor bokstav och korrigering av stavfel behövs. Medan text|textNoSuggestions används för inmatning av kod eller speciella termer där autokorrigering kan vara skadlig.

Enligt UX Stack Exchange (2025) snabbar texttangentbord med aktiverad autokorrigering upp inmatningen med 15–25% för genomsnittsanvändaren, men för tekniska termer (kod, URL, e-post) rekommenderas att stänga av autokorrigering eftersom den ofta ersätter korrekta termer med felaktiga.

xml
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"

<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"

Number — numeriskt tangentbord

TYPE_CLASS_NUMBER aktiverar det numeriska tangentbordet, som endast visar siffror, decimalavskiljare och minustecken. Denna typ används för inmatningsfält för kvantitet, priser, ålder, koder och andra numeriska data. Det numeriska tangentbordet tar mindre plats på skärmen än texttangentbordet och förhindrar oavsiktlig inmatning av bokstäver.

Number har tre modifierare: TYPE_NUMBER_FLAG_DECIMAL lägger till decimalpunkt/komma, TYPE_NUMBER_FLAG_SIGNED lägger till minustecken för negativa tal, TYPE_NUMBER_VARIATION_PASSWORD — för PIN-koder där siffror visas som dolda symboler. Kombinationen number|numberDecimal|numberSigned skapar ett fullvärdigt fält för inmatning av flyttal med valfritt tecken.

  • number — positiva heltal (ålder, antal produkter).
  • numberDecimal — tal med decimaldel (priser, vikt, längd).
  • numberSigned — tal med tecken (temperatur, koordinater).
  • numberPassword — dold inmatning av siffror för PIN-koder.
kotlin
// Numerisk inmatning med decimalpunkt
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Kontrollera inmatat nummer
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0

Phone och Email — specialiserade tangentbord

TYPE_CLASS_PHONE aktiverar telefontangentbordet, som visar siffror och symboler som är karakteristiska för telefonnummer: +, #, *, (, ). Till skillnad från nummertangentbordet visar phone även bokstavslayout i ett extra läge, eftersom telefonnummer kan innehålla bokstäver (till exempel 1-800-FLOWERS). Klassen phone har inga extra flaggor men stöder TYPE_TEXT_VARIATION_PHONE_ETC för inmatning av anknytningar.

TYPE_TEXT_VARIATION_EMAIL_ADDRESS aktiverar e-posttangentbordet, där @-tecknet och punkten finns på huvudskärmen, och vanliga domäntillägg (.com, .net, .org) är också tillgängliga. Gboard visar dessutom knappar med populära domäner vid inmatning efter @. E-posttangentbordet stänger automatiskt av autokorrigering eftersom e-postadresser kan innehålla icke-standardiserade teckenkombinationer.

Enligt Google Material Design Guidelines (2025) rekommenderas att för telefonfält även ange attributet android:digits, som begränsar uppsättningen tillåtna tecken. För e-postfält är det också viktigt att ange autofillHints="email" för stöd av autokomplettering från lösenordshanteraren och Google Autofill.

xml
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"

<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"

Password — tangentbord för lösenord

TYPE_TEXT_VARIATION_PASSWORD och TYPE_NUMBER_VARIATION_PASSWORD — är inmatningslägen för konfidentiell data. Vid inställning av textPassword visas inmatade tecken som punkter eller asterisker (beroende på Android-version och tangentbord). Tangentbordet i detta läge stänger av autokorrigering och sparande av inmatade ord i användarens ordbok, vilket förhindrar lösenordsläckage genom prediktiva inmatningsfunktioner.

Password tangentbordet stänger även av möjligheten att ta skärmdump av fältinnehållet (flaggan FLAG_SECURE), även om detta beteende beror på implementeringen av det specifika tangentbordet. Från och med Android 8.0 (API 26) stöder lösenordstangentbord autokomplettering via lösenordshanterare om attributet importantForAutofill="yes" är inställt.

Enligt Android Security Recommendations (2025) rekommenderas för lösenordsfält även: att ställa in maxLength för att förhindra mycket långa lösenord (som kan vara en attack mot databasen), att använda inputType="textPassword" tillsammans med TextInputLayout och endIconMode="password_toggle" så att användaren kan kontrollera det inmatade lösenordet innan formuläret skickas.

xml
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">

    @+id/etPasswordField
    android:inputType="textPassword"
    android:maxLength="64"
    android:importantForAutofill="yes" />

</com.google.android.material.textfield.TextInputLayout>

Konfigurera Keyboard Type i kod

Programmatisk konfiguration av Keyboard Type gör det möjligt att dynamiskt ändra tangentbordsläge beroende på sammanhang eller användarinmatning. Till exempel vid växling av fälttyp (text/nummer/datum) eller vid ändring av locale. Metoden setInputType() accepterar en bitmask InputType och uppdaterar omedelbart tangentbordet om fältet är i fokus.

Dynamisk växling av typ

kotlin
// Växla mellan text och numerisk inmatning
fun switchInputType(field: EditText, isNumeric: Boolean) {
    field.inputType = if (isNumeric) {
        InputType.TYPE_CLASS_NUMBER or
            InputType.TYPE_NUMBER_FLAG_DECIMAL
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
    }
    field.setSelection(field.text.length)
}

Kontroll av aktuell typ

kotlin
// Kontrollera om fältet är numeriskt
fun isNumericInput(field: EditText): Boolean {
    val type = field.inputType
    return (type and InputType.TYPE_MASK_CLASS) ==
        InputType.TYPE_CLASS_NUMBER
}

// Kontrollera om autokorrigering är aktiverad
fun isAutoCorrectEnabled(field: EditText): Boolean {
    return (field.inputType and
        InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}

Vanliga frågor

Vad händer om jag inte anger Keyboard Type?

Om inputType inte har angetts använder EditText som standard TYPE_CLASS_TEXT med flaggan TYPE_TEXT_FLAG_MULTI_LINE. Detta innebär standard QWERTY-tangentbord och flerradsinmatning. För de flesta fält rekommenderas att explicit ange inputType för att säkerställa korrekt tangentbordsbeteende och teckenfiltrering.

Hur gör jag ett tangentbord med "Done"-knapp istället för "Enter"?

Använd attributet android:imeOptions="actionDone" på EditText. Detta kommer att ersätta Enter-knappen med en Done-knapp. Andra alternativ: actionSearch (förstoringsglas), actionNext (högerpil), actionSend (skicka). Implementera tryckhanteringen via OnEditorActionListener i koden.

Kan jag stänga av tangentbordsvibration för ett fält?

Det går inte att stänga av vibration för ett specifikt fält — detta är en systeminställning som hanteras av användaren i tangentbordsinställningarna. Du kan dock helt förhindra att tangentbordet visas genom att ställa in attributet android:focusable="false" på EditText eller avbryta visningen via dispatchTouchEvent.

Hur gör jag ett skrivskyddat fält med möjlighet att kopiera text?

Ställ in android:inputType="none" eller anropa programmatiskt editText.setKeyListener(null). Fältet kommer att visa text, men tangentbordet visas inte vid fokus. Användaren kan markera och kopiera text, men inte ändra den. Alternativ — använd TextView med textIsSelectable="true".

Varför ändras inte tangentbordet efter setInputType()?

Efter anrop av setInputType() måste du visa tangentbordet igen, eftersom systemet kanske inte uppdaterar IME automatiskt. Anropa InputMethodManager.restartInput(view) för tvingad uppdatering. Om fältet inte är i fokus, anropa först requestFocus(), sedan restartInput.

Sammanfattning

  • Keyboard Type bestämmer layout, filtrering och beteende för tangentbordet för ett Android-inmatningsfält.
  • text — standard QWERTY-tangentbord med modifierare för autokorrigering, versaler och flerradighet.
  • number — numeriskt tangentbord för heltal och bråktal med alternativen signed och decimal.
  • phone — telefontangentbord med siffror, +, #, * och stöd för bokstavsnummer.
  • email — tangentbord med @, punkt och snabb åtkomst till domäntillägg.
  • textPassword — dold inmatning med avstängning av autokorrigering och ordboks-sparande.
  • imeOptions konfigurerar åtgärdsknappen på tangentbordet: Done, Search, Next, Send.

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å