Keyboard Type — je konfigurace virtuální klávesnice v Androidu, která určuje sadu zobrazovaných znaků a rozložení pro konkrétní vstupní pole. Android podporuje mnoho přednastavených typů: text (standardní textová), number (číselná), phone (telefonní), email (se symbolem @), textPassword (pro hesla), datetime a další. Každý typ optimalizuje rozhraní vstupu pro konkrétní úkol — například e-mailová klávesnice zobrazuje symbol @ a tečku na hlavní obrazovce. Podle údajů Android Developers (2026), správný výběr Keyboard Type snižuje počet stisknutí při zadávání o 20–40% ve srovnání se standardní textovou klávesnicí.
Hlavní body
Keyboard Type je určen hodnotou atributu android:inputType v XML nebo programovým voláním setInputType() v kódu. InputType je bitová maska, kde třída vstupu (třída) je kombinována s modifikačními příznaky. Základní třídy: TYPE_CLASS_TEXT pro text, TYPE_CLASS_NUMBER pro čísla, TYPE_CLASS_PHONE pro telefony, TYPE_CLASS_DATETIME pro datum a čas.
Každý Keyboard Type ovlivňuje tři aspekty: rozložení virtuální klávesnice (které znaky jsou viditelné na hlavní obrazovce), filtrování zadávaných znaků (které znaky jsou povoleny) a chování automatické opravy/automatického doplňování. Například klávesnice number zobrazuje pouze číslice a desetinný oddělovač, a nezobrazuje písmena, i když uživatel přepne režim. Podle údajů Android Developers Documentation (2026), kombinování tříd s příznaky umožňuje vytvářet vysoce specializované režimy: víceřádkový text s automatickou opravou, číslo s plovoucí desetinnou čárkou, heslo s možností automatického doplňování.
Je důležité pochopit, že Keyboard Type je doporučení pro vstupní systém (IME). Některé klávesnice třetích stran (Gboard, SwiftKey) mohou částečně ignorovat zadaný typ, pokud si uživatel nastavil vlastní preference. Většina standardních klávesnic Android a Google Gboard se však striktně řídí zadaným typem vstupu.
// Programové nastavení typu klávesnice
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — základní třída pro textový vstup. Aktivuje standardní klávesnici QWERTY s písmeny, číslicemi a symboly. Třída Text má největší počet modifikátorů, které upřesňují chování: TYPE_TEXT_FLAG_CAP_SENTENCES (automatické velké písmeno na začátku věty), TYPE_TEXT_FLAG_AUTO_CORRECT (automatická oprava), TYPE_TEXT_FLAG_MULTI_LINE (víceřádkový režim), TYPE_TEXT_FLAG_NO_SUGGESTIONS (vypnutí návrhů).
Modifikátory textové klávesnice lze kombinovat a vytvářet přesnou konfiguraci: například text|textCapSentences|textAutoCorrect je vhodný pro pole pro zadávání komentáře, kde je potřeba automatické velké písmeno a oprava překlepů. Zatímco text|textNoSuggestions se používá pro zadávání kódu nebo speciálních termínů, kde automatická oprava může uškodit.
Podle údajů UX Stack Exchange (2025), textová klávesnice s zapnutou automatickou opravou urychluje zadávání o 15–25% pro průměrného uživatele, ale pro technické termíny (kód, URL, email) se doporučuje automatickou opravu vypnout, protože často nahrazuje správné termíny nesprávnými.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER aktivuje číselnou klávesnici, která zobrazuje pouze číslice, desetinný oddělovač a znaménko minus. Tento typ se používá pro pole pro zadávání množství, cen, věku, kódů a dalších číselných údajů. Číselná klávesnice zabírá na obrazovce méně místa než textová a vylučuje náhodné zadávání písmen.
Number má tři modifikátory: TYPE_NUMBER_FLAG_DECIMAL přidává desetinnou tečku/čárku, TYPE_NUMBER_FLAG_SIGNED přidává znaménko minus pro záporná čísla, TYPE_NUMBER_VARIATION_PASSWORD — pro PIN kódy, kde jsou číslice zobrazeny jako skryté symboly. Kombinace number|numberDecimal|numberSigned vytváří plnohodnotné pole pro zadávání čísel s plovoucí desetinnou čárkou libovolného znaménka.
// Číselný vstup s desetinnou tečkou
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Zkontrolujte zadané číslo
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE aktivuje telefonní klávesnici, která zobrazuje číslice a symboly charakteristické pro telefonní čísla: +, #, *, (, ). Na rozdíl od klávesnice number, phone také zobrazuje rozložení písmen v doplňkovém režimu, protože telefonní čísla mohou obsahovat písmena (například 1-800-FLOWERS). Třída phone nemá další příznaky, ale podporuje TYPE_TEXT_VARIATION_PHONE_ETC pro zadávání vnitřních čísel.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS aktivuje e-mailovou klávesnici, na které se symbol @ a tečka nachází na hlavní obrazovce a jsou k dispozici také časté doménové přípony (.com, .net, .org). Gboard navíc zobrazuje tlačítka s oblíbenými doménami při zadávání po @. E-mailová klávesnice automaticky vypíná automatickou opravu, protože e-mailové adresy mohou obsahovat nestandardní kombinace znaků.
Podle údajů Google Material Design Guidelines (2025), pro telefonní pole se doporučuje také zadat atribut android:digits, který omezuje sadu povolených znaků. Pro e-mailová pole je také důležité zadat autofillHints="email" pro podporu automatického doplňování od správce hesel a Google Autofill.
<!-- 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 a TYPE_NUMBER_VARIATION_PASSWORD — jsou režimy zadávání pro důvěrné údaje. Při nastavení textPassword se zadávané znaky zobrazují jako tečky nebo hvězdičky (závisí na verzi Androidu a klávesnici). Klávesnice v tomto režimu vypíná automatickou opravu a ukládání zadaných slov do slovníku uživatele, čímž zabraňuje úniku hesla prostřednictvím funkcí prediktivního zadávání.
Password klávesnice také vypíná možnost pořízení snímku obrazovky obsahu pole (příznak FLAG_SECURE), i když toto chování závisí na implementaci konkrétní klávesnice. Počínaje Androidem 8.0 (API 26) podporují klávesnice password automatické doplňování prostřednictvím správců hesel, pokud je nastaven atribut importantForAutofill="yes".
Podle údajů Android Security Recommendations (2025), pro pole hesel se také doporučuje: nastavení maxLength pro zabránění velmi dlouhým heslům (která mohou být útokem na databázi), použití inputType="textPassword" spolu s TextInputLayout a endIconMode="password_toggle", aby uživatel mohl zkontrolovat zadané heslo před odesláním formuláře.
<!-- 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>
Programové nastavení Keyboard Type umožňuje dynamicky měnit režim klávesnice v závislosti na kontextu nebo vstupu uživatele. Například při přepínání typu pole (text/číslo/datum) nebo při změně locale. Metoda setInputType() přijímá bitovou masku InputType a okamžitě aktualizuje klávesnici, pokud je pole v ohnisku.
// Přepínání mezi textovým a číselným vstupem
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)
}
// Zkontrolujte, zda je pole číselné
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Zkontrolujte, zda je automatická oprava zapnuta
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Často kladené otázky
Pokud inputType není zadán, EditText ve výchozím nastavení používá TYPE_CLASS_TEXT s příznakem TYPE_TEXT_FLAG_MULTI_LINE. To znamená standardní klávesnici QWERTY a víceřádkové zadávání. U většiny polí se doporučuje explicitně zadat inputType, aby bylo zajištěno správné chování klávesnice a filtrování znaků.
Použijte atribut android:imeOptions="actionDone" na EditText. Tím se nahradí tlačítko Enter tlačítkem Done. Další možnosti: actionSearch (lupa), actionNext (šipka vpravo), actionSend (odeslání). Zpracování stisknutí implementujte přes OnEditorActionListener v kódu.
Nelze vypnout vibraci pro konkrétní pole — toto je systémové nastavení spravované uživatelem v nastavení klávesnice. Lze však zcela zabránit zobrazení klávesnice nastavením atributu android:focusable="false" na EditText nebo zrušením zobrazení přes dispatchTouchEvent.
Nastavte android:inputType="none" nebo programově zavolejte editText.setKeyListener(null). Pole bude zobrazovat text, ale klávesnice se při fokusu neobjeví. Uživatel bude moci text označit a zkopírovat, ale ne jej změnit. Alternativa — použijte TextView s textIsSelectable="true".
Po volání setInputType() je nutné klávesnici znovu zobrazit, protože systém nemusí IME automaticky aktualizovat. Zavolejte InputMethodManager.restartInput(view) pro vynucenou aktualizaci. Pokud pole není v fokusu, nejprve zavolejte requestFocus(), poté restartInput.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také