InputType — mi ez, beviteli attribútumok és beállításuk Androidban

Szerző: IT Sectr Megjelenés: 2026-07-07 Olvasási idő: 9 perc

InputType — egy Android attribútum, amely meghatározza a beírt adatok jellegét és a billentyűzet viselkedését szövegmezőkhöz. Az InputType érték egy bitmaszk, amely kombinálja a beviteli osztályt (szöveg, szám, telefon, dátum) és a módosítókat (többsoros, automatikus javítás, nagybetűk, rejtett bevitel). Az InputType befolyásolja a megjelenített billentyűzet típusát, a beírt karakterek szűrését és az automatikus kiegészítés működését. A Android Developers (2026) szerint az InputType az egyik legfontosabb attribútum a helyes adatbevitel biztosításához, és minden szerkeszthető szövegmezőhöz explicit módon be kell állítani.

Főbb pontok

  • InputType — bitmaszk, amely meghatározza a beviteli osztályt és a módosítókat az EditText számára.
  • Beviteli osztályok — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Módosítók — zászlók, amelyek pontosítják a viselkedést: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Kombinálás — az osztály és a módosítók bitenkénti OR segítségével egyesülnek a pontos konfigurációhoz.
  • Hatás — a helyes InputType gyorsítja a bevitelet, csökkenti a hibákat és javítja az űrlap UX-ét.

Mi az InputType Androidban

InputType — egy egész szám konstans (Int), amely kódolja a beviteli módot egy szövegmező számára. Androidban az android.text.InputType osztályban van definiálva. Az InputType érték két részből áll: a beviteli osztályból (bitek 0–4) és a módosítókból (bitek 5–31). A beviteli osztály meghatározza az alap adattípust — szöveg, szám, telefon, dátum. A módosítók pontosítják a viselkedést a kiválasztott osztályon belül — például a szöveges osztályhoz engedélyezhető az automatikus javítás, nagybetűk vagy többsoros bevitel.

Az InputType mechanizmus három szinten működik: az Android keretrendszer szintjén meghatározza, melyik InputConnection jön létre (kapcsolat az EditText és az IME között); az IME (billentyűzet) szintjén jelzi, mely karaktereket jelenítse meg és hogyan dolgozza fel a bevitelet; az alkalmazás szintjén szűri a karaktereket az EditText-be épített InputFilteren keresztül. Az Android Source Code (AOSP, 2026) szerint a bitmaszk a TextView.getInputType() metódusban, amely az aktuális értéket adja vissza, és a setInputType() metódusban, amely újrakonfigurálja a belső szűrőket és az IME kapcsolatot, kerül feldolgozásra.

Az InputType fontos jellemzője — biztonsági okokból nem olvasható ki másik folyamatból. Ez megakadályozza az adatlopást a beviteli típushoz való hozzáférésen keresztül (például annak meghatározása, hogy a mező jelszó-e). Amikor egy másik alkalmazásból próbálják olvasni az InputType-ot, alapértelmezés szerint TYPE_CLASS_TEXT kerül visszaadásra.

kotlin
// Alapvető InputType konstansok
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// Maszk az osztály kinyeréséhez
InputType.TYPE_MASK_CLASS       // 0x0000000F

InputType osztályok: TEXT, NUMBER, PHONE, DATETIME

Androidban négy alap InputType osztály van definiálva. Minden osztály egy adott adatkategóriának felel meg és aktiválja a megfelelő billentyűzet típust. Az osztály a bitmaszk 0–4 bitjeiben van jelezve, és a TYPE_MASK_CLASS (0x0F) maszk segítségével nyerhető ki.

OsztályKonstansBillentyűzetAlkalmazás
TEXTTYPE_CLASS_TEXT (1)QWERTYSzöveg, megjegyzések, leírás
NUMBERTYPE_CLASS_NUMBER (2)NumerikusMennyiség, ár, életkor
PHONETYPE_CLASS_PHONE (3)TelefonTelefonszám
DATETIMETYPE_CLASS_DATETIME (4)Dátum/időDátum, idő

A TYPE_CLASS_DATETIME ritkán használatos közvetlenül — általában dátum beviteléhez DatePicker vagy DatePickerDialog használatos, nem szövegmező. Azonban bizonyos forgatókönyvekben (gyors kézi dátumbevitel) ez az osztály hasznos lehet. Nincs specializált billentyűzete és általában numerikus billentyűzetet jelenít meg.

Minden beviteli osztály kombinálható variációkkal (variation) — az 5–7 bitekben jelzett altípusokkal. Például a TYPE_TEXT_VARIATION_PASSWORD (bit 5) rejtett bevitelet ad a TEXT osztályhoz. A variáció bitek: 0x000000E0 (TYPE_MASK_VARIATION maszk).

InputType zászló-módosítók

InputType zászló-módosítók (bitek 8–31) további képességeket adnak az alap osztályhoz. Nem változtatják meg a billentyűzet típusát, de módosítják a bevitel viselkedését. A zászlók osztályspecifikusak — a TEXT zászlói nem működnek a NUMBER-rel és fordítva. Az alábbiakban felsoroljuk a fő módosítókat minden osztályhoz.

TEXT zászlói

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — minden betű nagybetűs.
  • TYPE_TEXT_FLAG_CAP_WORDS — minden szó nagybetűvel kezdődik.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — nagybetű a mondat elején (alapértelmezett).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — gépelési hibák automatikus javítása.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — automatikus kiegészítés (AutoCompleteTextView számára).
  • TYPE_TEXT_FLAG_MULTI_LINE — többsoros bevitel.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — javaslatok kikapcsolása.

NUMBER zászlói

  • TYPE_NUMBER_FLAG_SIGNED — negatív számok engedélyezése (mínuszjel).
  • TYPE_NUMBER_FLAG_DECIMAL — tizedespont engedélyezése.

Az Android Developers Documentation (2026) szerint a különböző osztályok zászlói nem fedik át egymást — a TEXT zászló NUMBER-rel való használati kísérlete figyelmen kívül lesz hagyva. A beállított zászló ellenőrzéséhez bitenkénti AND használatos: (inputType and FLAG) != 0.

InputType kombinációk: példák különböző forgatókönyvekhez

Az InputType helyes kombinációja osztályokkal és zászlókkal a kulcs a kényelmes űrlapok létrehozásához. Vizsgáljuk meg a tipikus forgatókönyveket és a megfelelő InputType konfigurációkat. Minden forgatókönyv optimalizálja a bevitelet egy adott adattípushoz, intuitívvá téve az űrlapot és gyorsítva a kitöltést.

ForgatókönyvInputTypeBillentyűzet
NévtextCapWordsQWERTY, minden szó nagybetűvel
EmailtextEmailAddressQWERTY @ és . jellel
JelszótextPasswordQWERTY, rejtett bevitel
TelefonphoneSzámjegyek +, #, * jelekkel
ÁrnumberDecimalSzámjegyek vesszővel
MennyiségnumberCsak számjegyek
MegjegyzéstextCapSentences|textMultiLineQWERTY, többsoros
Kereséstext|textNoSuggestionsQWERTY javaslatok nélkül
kotlin
// Kombináció ármezőhöz
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Kombináció megjegyzésmezőhöz
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

Programozott munka az InputType-tal

Az InputType programozott beállítása a setInputType() segítségével felülírja az előző értéket. Ha csak a maszk egy részét kell megváltoztatni (például zászlót hozzáadni), el kell menteni az aktuális értéket, módosítani és újra alkalmazni. Minden setInputType() hívás újrakonfigurálja az EditText belső szűrőit.

A setRawInputType() metódus abban különbözik a setInputType-tól, hogy nem okozza a szűrők és javaslatok újrakonfigurálását. Az InputType ideiglenes megváltoztatására használatos az EditText állapotának teljes újratöltése nélkül. A setInputType() meghívása után ajánlott újraindítani az IME-t a billentyűzet frissítéséhez.

Módok váltása

kotlin
// Váltás jelszó és látható szöveg között
fun togglePasswordVisibility(editText: EditText) {
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    editText.inputType = if (isPassword) {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // Kurzor pozíció megtartása
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Osztály és variáció kinyerése

kotlin
// Beviteli osztály lekérése
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// Beviteli variáció lekérése
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Annak ellenőrzése, hogy jelszómező-e
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

Legjobb gyakorlatok az InputType kiválasztásához

A helyes InputType választás nem csak UX, hanem biztonság és adathelyesség kérdése is. A fő ajánlások a következők: mindig adjon meg explicit InputType-ot minden EditText számára; használja a legspecifikusabb beviteli osztályt; ne kombináljon zászlókat különböző osztályokból; érzékeny adatokat tartalmazó mezőkhöz használja a PASSWORD variációkat; keresőmezőkhöz használja az imeOptions=„actionSearch” lehetőséget.

Az InputType befolyásolja az akadálymentesítési szolgáltatások (Accessibility) működését is. A textPassword típusú mezők extra védelmet kapnak a képernyőolvasóktól — nem olvassák fel hangosan a beírt karaktereket. A textEmailAddress mezőknél a Screen Reader tájékoztatja a felhasználót, hogy a mező email számára van, és megfelelő javaslatokat kínál.

  • Explicititás — mindig explicit módon állítsa be az InputType-ot, ne hagyatkozzon az alapértelmezett értékre (textMultiLine).
  • Specifikusság — használja a legspecifikusabb típust: textEmailAddress, ne text-et email esetén.
  • Biztonság — jelszavakhoz, PIN-ekhez és kártyaadatokhoz használja a PASSWORD variációkat.
  • Automatikus kitöltés — kombinálja az InputType-ot autofillHints-szel a jelszókezelők támogatásához.
  • Tesztelés — ellenőrizze a viselkedést különböző billentyűzeteken (Gboard, SwiftKey, Samsung Keyboard).

A Material Design Guidelines (2025) szerint az InputType-nak meg kell felelnie a felhasználó által beírt adatok típusának. A helytelen InputType nem csak lassítja a bevitelet, hanem hibákhoz is vezethet: például ha telefonszám beviteléhez textMultiLine marad, a billentyűzet nem jeleníti meg a numerikus blokkot, és a felhasználó kénytelen lesz minden alkalommal manuálisan váltani az elrendezést.

Gyakran ismételt kérdések

Miben különbözik az InputType a Keyboard Type-tól?

InputType — egy EditText attribútum, amely bitmaszk segítségével határozza meg a bevitt adatok típusát. Keyboard Type — a vizuális billentyűzettípus nem hivatalos neve, amelyet az InputType aktivál. Az InputType befolyásolja a karakterek szűrését, az automatikus javítást és az automatikus kiegészítést is, nem csak a billentyűzet elrendezését.

Hogyan állítható vissza az InputType az alapértelmezett értékre?

Állítsa be a editText.inputType = InputType.TYPE_CLASS_TEXT értéket, vagy használja az InputType.TYPE_NULL (0x00000000) konstanst a teljes visszaállításhoz. TYPE_NULL esetén a mező fókuszáláskor nem jeleníti meg a billentyűzetet. A szabványos szövegbevitelhez való visszatéréshez állítsa be a TYPE_CLASS_TEXT-et zászlók nélkül.

Létrehozható egyedi InputType?

Nem hozható létre új InputType osztály, mivel az az Android keretrendszer része. Azonban kombinálhatja a meglévő osztályokat és zászlókat a kívánt viselkedés eléréséhez. A további karakterszűrést InputFilter segítségével implementálja, amelyet a setFilters() metódussal állít be az EditText-en.

Hogyan befolyásolja az InputType az IME-t (billentyűzetet)?

Az InputType az InputConnection-en keresztül kerül átadásra a beviteli rendszernek. Az IME beolvassa az InputType osztályát és variációját, és kiválasztja a megfelelő billentyűzet elrendezést. Például a TYPE_CLASS_NUMBER TYPE_NUMBER_FLAG_DECIMAL-lal azt eredményezi, hogy a billentyűzet egy numerikus blokkot jelenít meg ponttal. A legtöbb modern billentyűzet követi ezeket az ajánlásokat.

Hogyan ellenőrizhető az InputType futásidőben?

Használja a editText.inputType tulajdonságot Kotlinban vagy a editText.getInputType() metódust Javában. Az osztály kinyeréséhez alkalmazza a maszkot: inputType and InputType.TYPE_MASK_CLASS. Egy adott zászló ellenőrzéséhez: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — ha az eredmény != 0, a zászló be van állítva.

Összefoglalás

  • InputType — bitmaszk, amely a beviteli osztályból (TEXT, NUMBER, PHONE, DATETIME) és módosítókból áll.
  • Beviteli osztály meghatározza az alap adattípust és a megjelenített billentyűzet típusát.
  • Módosítók pontosítják a viselkedést: többsoros, automatikus javítás, nagybetűk, rejtett bevitel.
  • Kombinálás bitenkénti OR segítségével lehetővé teszi pontos konfigurációk létrehozását különböző forgatókönyvekhez.
  • PASSWORD variációk kikapcsolják az automatikus javítást, elrejtik a karaktereket és megakadályozzák a szótárba írást.
  • Programozott beállítás a setInputType() segítségével az IME újraindítását igényli a billentyűzet frissítéséhez.
  • Legjobb gyakorlatok — explicit módon állítsa be az InputType-ot, használjon specifikus típusokat és teszteljen különböző billentyűzeteken.

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.

Projekt megbeszélése

Olvassa el is