Keyboard Type — a virtuális billentyűzet konfigurációja Androidban, amely meghatározza a megjelenített karakterek készletét és elrendezését egy adott beviteli mezőhöz. Az Android számos előre beállított típust támogat: text (szabványos szöveges), number (numerikus), phone (telefonos), email (@ karakterrel), textPassword (jelszavakhoz), datetime és mások. Minden típus optimalizálja a beviteli felületet egy adott feladathoz — például az email billentyűzet a @ jelet és a pontot mutatja a főképernyőn. A Android Developers (2026) adatai szerint a Keyboard Type helyes megválasztása 20–40%-kal csökkenti a bevitelhez szükséges billentyűleütések számát a szabványos szöveges billentyűzethez képest.
Főbb pontok
Keyboard Type az android:inputType attribútum értékével XML-ben vagy a setInputType() programozott hívásával határozható meg kódban. Az InputType egy bitmaszk, ahol a beviteli osztály (osztály) módosító zászlókkal van kombinálva. Alaposztályok: TYPE_CLASS_TEXT szöveghez, TYPE_CLASS_NUMBER számokhoz, TYPE_CLASS_PHONE telefonokhoz, TYPE_CLASS_DATETIME dátumokhoz és időhöz.
Minden Keyboard Type három szempontot befolyásol: a virtuális billentyűzet elrendezését (mely karakterek láthatók a főképernyőn), a bevitt karakterek szűrését (mely karakterek engedélyezettek) és az automatikus javítás/kiegészítés viselkedését. Például a number billentyűzet csak számjegyeket és tizedes elválasztót jelenít meg, és nem mutat betűket, még akkor sem, ha a felhasználó módot vált. A Android Developers Documentation (2026) szerint az osztályok zászlókkal való kombinálása lehetővé teszi nagymértékben specializált módok létrehozását: többsoros szöveg automatikus javítással, lebegőpontos szám, jelszó automatikus kiegészítési lehetőséggel.
Fontos megérteni, hogy a Keyboard Type egy ajánlás a beviteli rendszer (IME) számára. Egyes harmadik féltől származó billentyűzetek (Gboard, SwiftKey) részben figyelmen kívül hagyhatják a megadott típust, ha a felhasználó saját preferenciákat állított be. A legtöbb szabványos Android billentyűzet és a Google Gboard azonban szigorúan követi a megadott beviteli típust.
// Billentyűzettípus programozott beállítása
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — a szövegbevitel alaposztálya. Aktiválja a szabványos QWERTY billentyűzetet betűkkel, számokkal és szimbólumokkal. A Text osztály rendelkezik a legtöbb módosítóval, amelyek pontosítják a viselkedést: TYPE_TEXT_FLAG_CAP_SENTENCES (automatikus nagybetű a mondat elején), TYPE_TEXT_FLAG_AUTO_CORRECT (automatikus javítás), TYPE_TEXT_FLAG_MULTI_LINE (többsoros mód), TYPE_TEXT_FLAG_NO_SUGGESTIONS (javaslatok kikapcsolása).
A szöveges billentyűzet módosítói kombinálhatók, pontos konfigurációt létrehozva: például a text|textCapSentences|textAutoCorrect alkalmas egy megjegyzés beviteli mezőhöz, ahol automatikus nagybetűre és gépelési hibák javítására van szükség. Míg a text|textNoSuggestions kód vagy speciális kifejezések beviteléhez használatos, ahol az automatikus javítás káros lehet.
A UX Stack Exchange (2025) adatai szerint az automatikus javítással rendelkező szöveges billentyűzet 15–25%-kal gyorsítja a bevitelt az átlagos felhasználó számára, de technikai kifejezések (kód, URL, email) esetén ajánlott kikapcsolni az automatikus javítást, mivel az gyakran helyettesíti a helyes kifejezéseket helytelenekkel.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER aktiválja a numerikus billentyűzetet, amely csak számjegyeket, tizedes elválasztót és mínusz jelet jelenít meg. Ezt a típust mennyiség, ár, életkor, kódok és egyéb numerikus adatok beviteli mezőihez használják. A numerikus billentyűzet kevesebb helyet foglal a képernyőn, mint a szöveges, és kizárja a véletlen betűbevitelt.
A Number három módosítóval rendelkezik: TYPE_NUMBER_FLAG_DECIMAL hozzáadja a tizedes pontot/vesszőt, TYPE_NUMBER_FLAG_SIGNED hozzáadja a mínusz jelet negatív számokhoz, TYPE_NUMBER_VARIATION_PASSWORD — PIN-kódokhoz, ahol a számjegyek rejtett szimbólumokként jelennek meg. A number|numberDecimal|numberSigned kombináció egy teljes értékű mezőt hoz létre tetszőleges előjelű lebegőpontos számok beviteléhez.
// Numerikus bevitel tizedes ponttal
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Ellenőrizze a bevitt számot
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE aktiválja a telefon billentyűzetet, amely a telefonszámokra jellemző számjegyeket és szimbólumokat jeleníti meg: +, #, *, (, ). A number billentyűzettel ellentétben a phone egy kiegészítő módban a betűk elrendezését is mutatja, mivel a telefonszámok betűket is tartalmazhatnak (például 1-800-FLOWERS). A phone osztálynak nincsenek további zászlói, de támogatja a TYPE_TEXT_VARIATION_PHONE_ETC-t mellékállomások beviteléhez.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS aktiválja az email billentyűzetet, ahol a @ jel és a pont a főképernyőn található, valamint a gyakori domain kiterjesztések (.com, .net, .org) is elérhetők. A Gboard további gombokat jelenít meg népszerű domainekkel a @ utáni bevitelkor. Az email billentyűzet automatikusan kikapcsolja az automatikus javítást, mivel az email címek nem szabványos karakterkombinációkat tartalmazhatnak.
A Google Material Design Guidelines (2025) szerint telefon mezőkhöz ajánlott az android:digits attribútumot is megadni, amely korlátozza az engedélyezett karakterkészletet. Email mezőkhöz fontos az autofillHints="email" megadása is a jelszókezelő és a Google Autofill általi automatikus kitöltés támogatásához.
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"
<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"
TYPE_TEXT_VARIATION_PASSWORD és TYPE_NUMBER_VARIATION_PASSWORD — bizalmas adatok beviteli módjai. A textPassword beállításakor a bevitt karakterek pontokként vagy csillagokként jelennek meg (az Android verziójától és a billentyűzettől függően). A billentyűzet ebben a módban kikapcsolja az automatikus javítást és a bevitt szavak felhasználói szótárba mentését, megakadályozva a jelszó kiszivárgását a prediktív beviteli funkciókon keresztül.
A Password billentyűzet letiltja a mező tartalmának képernyőkép készítését is (FLAG_SECURE zászló), bár ez a viselkedés az adott billentyűzet implementációjától függ. Az Android 8.0-tól (API 26) kezdve a jelszó billentyűzetek támogatják az automatikus kitöltést jelszókezelőkön keresztül, ha az importantForAutofill="yes" attribútum be van állítva.
A Android Security Recommendations (2025) szerint jelszó mezőkhöz ajánlott továbbá: a maxLength beállítása a nagyon hosszú jelszavak megelőzésére (amelyek adatbázis-támadást jelenthetnek), az inputType="textPassword" használata TextInputLayout és endIconMode="password_toggle" együtt, hogy a felhasználó ellenőrizhesse a megadott jelszót az űrlap elküldése előtt.
<!-- 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>
A Keyboard Type programozott beállítása lehetővé teszi a billentyűzet mód dinamikus megváltoztatását a kontextustól vagy a felhasználói beviteltől függően. Például a mező típusának váltásakor (szöveg/szám/dátum) vagy a locale megváltoztatásakor. A setInputType() metódus elfogad egy InputType bitmaszkot, és azonnal frissíti a billentyűzetet, ha a mező fókuszban van.
// Váltás szöveges és numerikus bevitel között
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)
}
// Ellenőrizze, hogy a mező numerikus-e
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Ellenőrizze, hogy az automatikus javítás be van-e kapcsolva
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Gyakran ismételt kérdések
Ha az inputType nincs megadva, az EditText alapértelmezés szerint a TYPE_CLASS_TEXT-et használja a TYPE_TEXT_FLAG_MULTI_LINE zászlóval. Ez szabványos QWERTY billentyűzetet és többsoros bevitelt jelent. A legtöbb mezőhöz ajánlott explicit módon megadni az inputType-ot a billentyűzet helyes viselkedésének és a karakterek szűrésének biztosításához.
Használja az android:imeOptions="actionDone" attribútumot az EditText-en. Ez lecseréli az Enter gombot egy Done gombra. Egyéb lehetőségek: actionSearch (nagyító), actionNext (jobbra nyíl), actionSend (küldés). A lenyomás kezelését implementálja az OnEditorActionListener segítségével a kódban.
Nem kapcsolható ki a rezgés egy adott mezőhöz — ez egy rendszerbeállítás, amelyet a felhasználó kezel a billentyűzet beállításaiban. Azonban teljesen megakadályozhatja a billentyűzet megjelenését az android:focusable="false" attribútum beállításával az EditText-en vagy a megjelenítés megszakításával a dispatchTouchEvent segítségével.
Állítsa be az android:inputType="none" értéket, vagy hívja programozottan a editText.setKeyListener(null) függvényt. A mező megjeleníti a szöveget, de a billentyűzet nem jelenik meg fókusz esetén. A felhasználó kijelölheti és másolhatja a szöveget, de nem módosíthatja azt. Alternatíva — használjon TextView-t textIsSelectable="true" beállítással.
A setInputType() meghívása után újra meg kell jeleníteni a billentyűzetet, mivel a rendszer nem frissítheti automatikusan az IME-t. Hívja meg az InputMethodManager.restartInput(view) függvényt a kényszerített frissítéshez. Ha a mező nincs fókuszban, először hívja a requestFocus()-t, majd a restartInput-ot.
Összefoglaló
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