Keyboard Type — bu Android-da virtual klaviaturaning konfiguratsiyasi bo'lib, ma'lum bir kiritish maydoni uchun ko'rsatiladigan belgilar to'plami va joylashuvini belgilaydi. Android ko'plab oldindan o'rnatilgan turlarni qo'llab-quvvatlaydi: text (standart matn), number (raqamli), phone (telefon), email (@ belgisi bilan), textPassword (parollar uchun), datetime va boshqalar. Har bir tur kiritish interfeysini muayyan vazifaga moslashtiradi — masalan, email klaviaturasi asosiy ekranda @ belgisi va nuqtani ko'rsatadi. Android Developers (2026) ma'lumotlariga ko'ra, Keyboard Type ni to'g'ri tanlash standart matn klaviaturasiga nisbatan kiritishdagi bosishlar sonini 20–40% ga kamaytiradi.
Asosiy fikrlar
Keyboard Type XML-dagi android:inputType atributi qiymati yoki kodda setInputType() dasturiy chaqiruvi bilan aniqlanadi. InputType bit maskasi bo'lib, unda kiritish sinfi (sinf) modifikator bayroqlari bilan birlashtiriladi. Asosiy sinflar: matn uchun TYPE_CLASS_TEXT, raqamlar uchun TYPE_CLASS_NUMBER, telefonlar uchun TYPE_CLASS_PHONE, sana va vaqt uchun TYPE_CLASS_DATETIME.
Har bir Keyboard Type uch jihatga ta'sir qiladi: virtual klaviaturaning joylashuvi (asosiy ekranda qaysi belgilar ko'rinadi), kiritilgan belgilarni filtrlash (qaysi belgilarga ruxsat beriladi) va avtotuzatish/avtotoldirish xatti-harakati. Masalan, number klaviaturasi faqat raqamlar va o'nli ajratgichni ko'rsatadi, foydalanuvchi rejimni o'zgartirsa ham harflarni ko'rsatmaydi. Android Developers Documentation (2026) ma'lumotlariga ko'ra, sinflarni bayroqlar bilan birlashtirish yuqori ixtisoslashgan rejimlarni yaratishga imkon beradi: avtotuzatish bilan ko'p qatorli matn, suzuvchi nuqtali raqam, avtotoldirish imkoniyati bilan parol.
Tushunish muhimki, Keyboard Type kiritish tizimi (IME) uchun tavsiyadir. Ba'zi uchinchi tomon klaviaturalari (Gboard, SwiftKey) agar foydalanuvchi o'z afzalliklarini sozlagan bo'lsa, ko'rsatilgan turni qisman e'tiborsiz qoldirishi mumkin. Biroq, ko'pchilik standart Android klaviaturalari va Google Gboard ko'rsatilgan kiritish turiga qat'iy rioya qiladi.
// Klaviatura turini dasturiy sozlash
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — matn kiritish uchun asosiy sinf. U harflar, raqamlar va belgilar bilan standart QWERTY klaviaturasini faollashtiradi. Text sinfi xatti-harakatni aniqlashtiradigan eng ko'p modifikatorga ega: TYPE_TEXT_FLAG_CAP_SENTENCES (gap boshida avtomatik katta harf), TYPE_TEXT_FLAG_AUTO_CORRECT (avtotuzatish), TYPE_TEXT_FLAG_MULTI_LINE (ko'p qatorli rejim), TYPE_TEXT_FLAG_NO_SUGGESTIONS (takliflarni o'chirish).
Matn klaviaturasining modifikatorlari birlashtirilib, aniq konfiguratsiya yaratilishi mumkin: masalan, text|textCapSentences|textAutoCorrect sharh kiritish maydoni uchun mos keladi, bu erda avtomatik katta harf va xatolarni tuzatish kerak. text|textNoSuggestions esa kod yoki maxsus terminlarni kiritish uchun ishlatiladi, bu erda avtotuzatish zarar keltirishi mumkin.
UX Stack Exchange (2025) ma'lumotlariga ko'ra, avtotuzatish yoqilgan matn klaviaturasi o'rtacha foydalanuvchi uchun kiritishni 15–25% ga tezlashtiradi, ammo texnik terminlar (kod, URL, email) uchun avtotuzatishni o'chirish tavsiya etiladi, chunki u ko'pincha to'g'ri terminlarni noto'g'rilari bilan almashtiradi.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER faqat raqamlar, o'nli ajratgich va minus belgisini ko'rsatadigan raqamli klaviaturani faollashtiradi. Bu tur miqdor, narx, yosh, kodlar va boshqa raqamli ma'lumotlarni kiritish maydonlari uchun ishlatiladi. Raqamli klaviatura ekranda matn klaviaturasidan kamroq joy egallaydi va tasodifiy harf kiritilishini istisno qiladi.
Number uchta modifikatorga ega: TYPE_NUMBER_FLAG_DECIMAL o'nli nuqta/vergulni qo'shadi, TYPE_NUMBER_FLAG_SIGNED manfiy raqamlar uchun minus belgisini qo'shadi, TYPE_NUMBER_VARIATION_PASSWORD — PIN-kodlar uchun, bu erda raqamlar yashirin belgilar sifatida ko'rsatiladi. number|numberDecimal|numberSigned kombinatsiyasi istalgan belgili suzuvchi nuqtali raqamlarni kiritish uchun to'liq maydon yaratadi.
// O'nli nuqta bilan raqamli kiritish
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Kiritilgan raqamni tekshiring
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE telefon raqamlari uchun xos bo'lgan raqamlar va belgilarni ko'rsatadigan telefon klaviaturasini faollashtiradi: +, #, *, (, ). Number klaviaturasidan farqli o'laroq, phone qo'shimcha rejimda harf joylashuvini ham ko'rsatadi, chunki telefon raqamlarida harflar bo'lishi mumkin (masalan, 1-800-FLOWERS). Phone sinfi qo'shimcha bayroqlarga ega emas, lekin ichki raqamlarni kiritish uchun TYPE_TEXT_VARIATION_PHONE_ETC ni qo'llab-quvvatlaydi.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS email klaviaturasini faollashtiradi, unda @ belgisi va nuqta asosiy ekranda joylashgan, shuningdek tez-tez ishlatiladigan domen kengaytmalari (.com, .net, .org) mavjud. Gboard @ dan keyin kiritishda qo'shimcha ravishda mashhur domenlar bilan tugmalarni ko'rsatadi. Email klaviaturasi avtomatik ravishda avtotuzatishni o'chiradi, chunki email manzillari nostandart belgi kombinatsiyalarini o'z ichiga olishi mumkin.
Google Material Design Guidelines (2025) ma'lumotlariga ko'ra, telefon maydonlari uchun qo'shimcha ravishda ruxsat etilgan belgilar to'plamini cheklaydigan android:digits atributini ko'rsatish tavsiya etiladi. Email maydonlari uchun parol menejeri va Google Autofill dan avtotoldirishni qo'llab-quvvatlash uchun autofillHints="email" ni ko'rsatish ham muhimdir.
<!-- 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 va TYPE_NUMBER_VARIATION_PASSWORD — maxfiy ma'lumotlarni kiritish rejimlaridir. textPassword o'rnatilganda, kiritilgan belgilar nuqtalar yoki yulduzchalar shaklida ko'rsatiladi (Android versiyasi va klaviaturaga qarab). Bu rejimda klaviatura avtotuzatishni va kiritilgan so'zlarning foydalanuvchi lug'atida saqlanishini o'chiradi, bashoratli kiritish funksiyalari orqali parol sizib chiqishining oldini oladi.
Password klaviaturasi shuningdek maydon tarkibining skrinshotini olish imkoniyatini o'chiradi (FLAG_SECURE bayrog'i), garchi bu xatti-harakat muayyan klaviaturaning amalga oshirilishiga bog'liq. Android 8.0 (API 26) dan boshlab, parol klaviaturalari importantForAutofill="yes" atributi o'rnatilgan bo'lsa, parol menejerlari orqali avtotoldirishni qo'llab-quvvatlaydi.
Android Security Recommendations (2025) ma'lumotlariga ko'ra, parol maydonlari uchun quyidagilar ham tavsiya etiladi: juda uzun parollarning oldini olish uchun maxLength o'rnatish (bular ma'lumotlar bazasiga hujum bo'lishi mumkin), foydalanuvchi formani yuborishdan oldin kiritilgan parolni tekshirishi uchun inputType="textPassword" ni TextInputLayout va endIconMode="password_toggle" bilan birga ishlatish.
<!-- 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>
Keyboard Type ni dasturiy sozlash kontekst yoki foydalanuvchi kiritishiga qarab klaviatura rejimini dinamik o'zgartirish imkonini beradi. Masalan, maydon turini o'zgartirganda (matn/raqam/sana) yoki lokalni o'zgartirganda. setInputType() metodi InputType bit maskasini qabul qiladi va maydon fokusda bo'lsa, klaviaturani darhol yangilaydi.
// Matn va raqamli kiritish o'rtasida almashish
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)
}
// Maydon raqamli ekanligini tekshiring
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Avtotuzatish yoqilganligini tekshiring
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Tez-tez so'raladigan savollar
Agar inputType ko'rsatilmagan bo'lsa, EditText sukut bo'yicha TYPE_TEXT_FLAG_MULTI_LINE bayrog'i bilan TYPE_CLASS_TEXT dan foydalanadi. Bu standart QWERTY klaviaturasi va ko'p qatorli kiritishni anglatadi. Ko'pchilik maydonlar uchun klaviaturaning to'g'ri xatti-harakati va belgilarni filtrlashni ta'minlash uchun inputType ni aniq ko'rsatish tavsiya etiladi.
EditText da android:imeOptions="actionDone" atributidan foydalaning. Bu Enter tugmasini Done tugmasi bilan almashtiradi. Boshqa variantlar: actionSearch (lupa), actionNext (o'ng strelka), actionSend (yuborish). Tugma bosilishini qayta ishlashni kodda OnEditorActionListener orqali amalga oshiring.
Muayyan maydon uchun vibratsiyani o'chirish mumkin emas — bu foydalanuvchi tomonidan klaviatura sozlamalarida boshqariladigan tizim sozlamasidir. Biroq, EditText da android:focusable="false" atributini o'rnatish yoki dispatchTouchEvent orqali ko'rsatishni bekor qilish orqali klaviaturaning to'liq paydo bo'lishining oldini olish mumkin.
android:inputType="none" ni o'rnating yoki dasturiy ravishda editText.setKeyListener(null) ni chaqiring. Maydon matnni ko'rsatadi, ammo fokusda klaviatura paydo bo'lmaydi. Foydalanuvchi matnni tanlab nusxalashi mumkin, ammo o'zgartira olmaydi. Muqobil — textIsSelectable="true" bilan TextView dan foydalanish.
setInputType() chaqiruvidan so'ng klaviaturani qayta ko'rsatish kerak, chunki tizim IME ni avtomatik yangilamasligi mumkin. Majburiy yangilash uchun InputMethodManager.restartInput(view) ni chaqiring. Agar maydon fokusda bo'lmasa, avval requestFocus(), keyin restartInput ni chaqiring.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.