Keyboard Type — bu nima, klaviatura turlari va Android-da kiritish sozlamalari

Muallif: IT Sectr Nashr etilgan: 2026-07-07 O'qish vaqti: 9 daq

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 — Android-dagi android:inputType atributi bilan belgilanadigan klaviatura rejimi.
  • Asosiy turlar — turli kiritish stsenariylari uchun text, number, phone, email, textPassword, datetime.
  • Kiritishni optimallashtirish — to'g'ri klaviatura turi formalarni to'ldirishni 20–40% ga tezlashtiradi.
  • Bayroqlar kombinatsiyasi — inputType kiritish sinfi va modifikatorlarni (ko'p qatorlilik, avtotuzatish) birlashtiradi.
  • IME options — imeOptions atributi klaviaturada harakat tugmasini boshqaradi (Done, Search, Next).

Android-da Keyboard Type nima

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.

kotlin
// Klaviatura turini dasturiy sozlash
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — standart matn klaviaturasi

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.

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

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

Number — raqamli klaviatura

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.

  • number — butun musbat raqamlar (yosh, mahsulot soni).
  • numberDecimal — o'nli qismi bo'lgan raqamlar (narxlar, vazn, bo'y).
  • numberSigned — belgili raqamlar (harorat, koordinatalar).
  • numberPassword — PIN-kodlar uchun raqamlarning yashirin kiritilishi.
kotlin
// 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

Phone va Email — ixtisoslashgan klaviaturalar

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.

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 — parollar uchun klaviatura

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.

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>

Kodda Keyboard Type sozlamalari

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.

Turni dinamik o'zgartirish

kotlin
// 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)
}

Joriy turni tekshirish

kotlin
// 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

Keyboard Type ko'rsatilmasa nima bo'ladi?

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.

„Enter" o'rniga „Done" tugmasi bo'lgan klaviaturani qanday qilish mumkin?

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.

Maydon uchun klaviatura vibratsiyasini o'chirish mumkinmi?

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.

Faqat o'qish uchun, lekin matnni nusxalash imkoniyati bilan maydonni qanday qilish 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.

Nega setInputType() dan keyin klaviatura o'zgarmaydi?

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

  • Keyboard Type Android kiritish maydoni uchun klaviaturaning joylashuvi, filtrlashi va xatti-harakatini belgilaydi.
  • text — avtotuzatish, katta harflar va ko'p qatorlilik modifikatorlari bilan standart QWERTY klaviaturasi.
  • number — signed va decimal opsiyasi bilan butun va kasr raqamlar uchun raqamli klaviatura.
  • phone — raqamlar, +, #, * va harfli raqamlarni qo'llab-quvvatlash bilan telefon klaviaturasi.
  • email — @, nuqta va domen kengaytmalariga tezkor kirish bilan klaviatura.
  • textPassword — avtotuzatish va lug'atda saqlash o'chirilgan holda yashirin kiritish.
  • imeOptions klaviaturadagi harakat tugmasini sozlaydi: Done, Search, Next, Send.

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.

Loyihani muhokama qilish

Shuningdek o'qing