InputType — bu nima, kiritish atributlari va ularni Android-da sozlash

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

InputType — bu kiritiladigan ma'lumotlarning xarakterini va matn maydonlari uchun klaviatura harakatini belgilaydigan Android atributidir. InputType qiymati kirish sinfini (matn, raqam, telefon, sana) va modifikatorlarni (ko'p qatorli, avtomatik tuzatish, katta harflar, yashirin kiritish) birlashtiruvchi bit maskasini ifodalaydi. InputType ko'rsatiladigan klaviatura turiga, kiritiladigan belgilarni filtrlashga va avtomatik to'ldirish ishiga ta'sir qiladi. Android Developers (2026) ma'lumotiga ko'ra, InputType ma'lumotlarni to'g'ri kiritishni ta'minlash uchun eng muhim atributlardan biri hisoblanadi va har bir tahrirlanadigan matn maydoni uchun aniq belgilanishi kerak.

Asosiy fikrlar

  • InputType — EditText uchun kirish sinfi va modifikatorlarni belgilaydigan bit maskasi.
  • Kirish sinflari — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME.
  • Modifikatorlar — harakatni aniqlashtiruvchi bayroqlar: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES.
  • Birlashtirish — sinf va modifikatorlar aniq sozlash uchun bitli OR orqali birlashtiriladi.
  • Ta'sir — to'g'ri InputType kiritishni tezlashtiradi, xatolarni kamaytiradi va forma UX-ni yaxshilaydi.

Android-da InputType nima

InputType — bu matn maydoni uchun kiritish rejimini kodlaydigan butun son konstantasidir (Int). Android-da u android.text.InputType sinfida belgilangan. InputType qiymati ikki qismdan iborat: kirish sinfi (bitlar 0–4) va modifikatorlar (bitlar 5–31). Kirish sinfi asosiy ma'lumot turini — matn, raqam, telefon, sanani belgilaydi. Modifikatorlar tanlangan sinf ichida harakatni aniqlashtiradi — masalan, matn sinfi uchun avtomatik tuzatish, katta harflar yoki ko'p qatorli kiritish yoqilishi mumkin.

InputType mexanizmi uch darajada ishlaydi: Android framework darajasida qaysi InputConnection yaratilishini belgilaydi (EditText va IME o'rtasidagi aloqa); IME (klaviatura) darajasida qaysi belgilar ko'rsatilishi va kiritish qanday qayta ishlanishini ko'rsatadi; dastur darajasida EditText-ga o'rnatilgan InputFilter orqali belgilarni filtrlaydi. Android Source Code (AOSP, 2026) ma'lumotiga ko'ra, bit maskasi joriy qiymatni qaytaruvchi TextView.getInputType() metodi va ichki filtrlarni va IME bilan aloqani qayta sozlovchi setInputType() metodida qayta ishlanadi.

InputType-ning muhim xususiyati — xavfsizlik sababli uni boshqa jarayondan o'qib bo'lmaydi. Bu kirish turiga kirish orqali ma'lumot o'g'irlanishining oldini oladi (masalan, maydon parol ekanligini aniqlash). Boshqa dasturdan InputType o'qishga urinilganda, standart sifatida TYPE_CLASS_TEXT qaytariladi.

kotlin
// InputType asosiy konstantalari
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// Sinfni chiqarish uchun maska
InputType.TYPE_MASK_CLASS       // 0x0000000F

InputType sinflari: TEXT, NUMBER, PHONE, DATETIME

Android-da to'rtta asosiy InputType sinfi belgilangan. Har bir sinf ma'lum bir ma'lumot toifasiga mos keladi va tegishli klaviatura turini faollashtiradi. Sinf bit maskasining 0–4 bitlarida ko'rsatilgan va TYPE_MASK_CLASS (0x0F) maskasi orqali chiqarilishi mumkin.

SinfKonstantaKlaviaturaQo'llanilishi
TEXTTYPE_CLASS_TEXT (1)QWERTYMatn, sharhlar, tavsif
NUMBERTYPE_CLASS_NUMBER (2)RaqamliMiqdor, narx, yosh
PHONETYPE_CLASS_PHONE (3)TelefonTelefon raqami
DATETIMETYPE_CLASS_DATETIME (4)Sana/vaqtSana, vaqt

TYPE_CLASS_DATETIME to'g'ridan-to'g'ri kamdan-kam ishlatiladi — odatda sanani kiritish uchun DatePicker yoki DatePickerDialog qo'llaniladi, matn maydoni emas. Biroq ba'zi stsenariylarda (sananing tez qo'lda kiritilishi) bu sinf foydali bo'lishi mumkin. Uning ixtisoslashgan klaviaturasi yo'q va odatda raqamli klaviaturani ko'rsatadi.

Har bir kirish sinfi variatsiyalar (variation) — bitlar 5–7 da ko'rsatilgan kichik turlar bilan birlashtirilishi mumkin. Masalan, TYPE_TEXT_VARIATION_PASSWORD (bit 5) TEXT sinfiga yashirin kiritishni qo'shadi. Variatsiya bitlari: 0x000000E0 (maska TYPE_MASK_VARIATION).

InputType bayroq-modifikatorlari

InputType bayroq-modifikatorlari (bitlar 8–31) asosiy sinfga qo'shimcha imkoniyatlar qo'shadi. Ular klaviatura turini o'zgartirmaydi, lekin kiritish harakatini o'zgartiradi. Bayroqlar har bir sinf uchun xos — TEXT uchun bayroqlar NUMBER bilan ishlamaydi va aksincha. Quyida har bir sinf uchun asosiy modifikatorlar keltirilgan.

TEXT uchun bayroqlar

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — barcha harflar katta.
  • TYPE_TEXT_FLAG_CAP_WORDS — har bir so'z katta harf bilan boshlanadi.
  • TYPE_TEXT_FLAG_CAP_SENTENCES — jumla boshida katta harf (standart).
  • TYPE_TEXT_FLAG_AUTO_CORRECT — xatolarni avtomatik tuzatish.
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — avtomatik to'ldirish (AutoCompleteTextView uchun).
  • TYPE_TEXT_FLAG_MULTI_LINE — ko'p qatorli kiritish.
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — takliflarni o'chirish.

NUMBER uchun bayroqlar

  • TYPE_NUMBER_FLAG_SIGNED — manfiy raqamlarga ruxsat beradi (minus belgisi).
  • TYPE_NUMBER_FLAG_DECIMAL — o'nli nuqtaga ruxsat beradi.

Android Developers Documentation (2026) ma'lumotiga ko'ra, turli sinflar uchun bayroqlar bir-biriga o'xshamaydi — TEXT bayrog'ini NUMBER bilan ishlatish urinishi e'tiborga olinmaydi. O'rnatilgan bayroqni tekshirish uchun bitli AND ishlatiladi: (inputType and FLAG) != 0.

InputType kombinatsiyalari: turli stsenariylar uchun misollar

InputType-ning sinflar va bayroqlar bilan to'g'ri birikmasi qulay formalar yaratishning kalitidir. Odatiy stsenariylarni va tegishli InputType konfiguratsiyalarini ko'rib chiqamiz. Har bir stsenariy ma'lum bir ma'lumot turi uchun kiritishni optimallashtiradi, formani intuitiv qiladi va to'ldirishni tezlashtiradi.

StsenariyInputTypeKlaviatura
IsmtextCapWordsQWERTY, har bir so'z katta harf bilan
EmailtextEmailAddressQWERTY @ va . bilan
ParoltextPasswordQWERTY, yashirin kiritish
TelefonphoneRaqamlar +, #, * bilan
NarxnumberDecimalVergul bilan raqamlar
MiqdornumberFaqat raqamlar
SharhtextCapSentences|textMultiLineQWERTY, ko'p qatorli
Qidiruvtext|textNoSuggestionsTakliflarsiz QWERTY
kotlin
// Narx maydoni uchun kombinatsiya
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// Sharh maydoni uchun kombinatsiya
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

InputType bilan dasturiy ishlash

InputType-ni setInputType() orqali dasturiy o'rnatish oldingi qiymatni bekor qiladi. Agar faqat maskaning bir qismini o'zgartirish kerak bo'lsa (masalan, bayroq qo'shish), joriy qiymatni saqlab, uni o'zgartirib va qayta qo'llash kerak. Har bir setInputType() chaqiruvi EditText-ning ichki filtrlarini qayta sozlaydi.

setRawInputType() metodi setInputType-dan filtrlarni va takliflarni qayta sozlamasligi bilan farq qiladi. U EditText holatini to'liq qayta yuklamasdan InputType-ni vaqtincha o'zgartirish uchun ishlatiladi. setInputType() chaqiruvidan so'ng klaviaturani yangilash uchun IME-ni qayta ishga tushirish tavsiya etiladi.

Rejimlarni almashtirish

kotlin
// Parol va ko'rinadigan matn o'rtasida almashish
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
    }

    // Kursor joylashuvini saqlash
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

Sinf va variatsiyani chiqarish

kotlin
// Kirish sinfini olish
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// Kirish variatsiyasini olish
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// Parol maydoni ekanligini tekshirish
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

InputType tanlash bo'yicha eng yaxshi amaliyotlar

To'g'ri InputType tanlash nafaqat UX, balki xavfsizlik va ma'lumotlarning to'g'riligidir. Asosiy tavsiyalar quyidagilarni o'z ichiga oladi: har bir EditText uchun aniq InputType belgilang; eng aniq kirish sinfidan foydalaning; turli sinflardan bayroqlarni birlashtirmang; nozik ma'lumotlarga ega maydonlar uchun PASSWORD variatsiyalaridan foydalaning; qidiruv maydonlari uchun imeOptions=”actionSearch” ishlating.

InputType shuningdek, maxsus imkoniyatlar xizmatlari (Accessibility) ishiga ta'sir qiladi. textPassword turiga ega maydonlar ekran o'quvchilaridan qo'shimcha himoya oladi — ular kiritilgan belgilarni ovoz bilan o'qimaydi. textEmailAddress maydonlari uchun Screen Reader foydalanuvchiga maydon email uchun mo'ljallanganligini bildiradi va tegishli takliflarni taqdim etadi.

  • Aniqlik — har doim InputType-ni aniq belgilang, standart qiymatga (textMultiLine) ishonmang.
  • Aniqlik — eng aniq turdan foydalaning: email uchun text emas, textEmailAddress.
  • Xavfsizlik — parollar, PIN va karta ma'lumotlari uchun PASSWORD variatsiyalaridan foydalaning.
  • Avtomatik to'ldirish — parol menejerlarini qo'llab-quvvatlash uchun InputType-ni autofillHints bilan birlashtiring.
  • Sinov — turli klaviaturalarda (Gboard, SwiftKey, Samsung Keyboard) harakatni tekshiring.

Material Design Guidelines (2025) ma'lumotiga ko'ra, InputType foydalanuvchi kiritadigan ma'lumot turiga mos kelishi kerak. Noto'g'ri InputType nafaqat kiritishni sekinlashtiradi, balki xatolarga ham olib kelishi mumkin: masalan, telefon raqamini kiritish uchun textMultiLine qoldirilsa, klaviatura raqam blokini ko'rsatmaydi va foydalanuvchi har safar qo'lda layoutni o'zgartirishga majbur bo'ladi.

Tez-tez beriladigan savollar

InputType Keyboard Type-dan nima bilan farq qiladi?

InputType — bu bit maskasi orqali kiritiladigan ma'lumotlar turini belgilaydigan EditText atributidir. Keyboard Type — InputType tomonidan faollashtiriladigan vizual klaviatura turining norasmiy nomidir. InputType shuningdek, belgilarni filtrlashga, avtomatik tuzatishga va avtomatik to'ldirishga ta'sir qiladi, nafaqat klaviatura layoutiga.

InputType-ni standart qiymatga qanday tiklash mumkin?

editText.inputType = InputType.TYPE_CLASS_TEXT ni o'rnating yoki to'liq tiklash uchun InputType.TYPE_NULL (0x00000000) konstantasidan foydalaning. TYPE_NULL bilan maydon fokusda klaviaturani ko'rsatmaydi. Standart matn kiritishga qaytish uchun bayroqsiz TYPE_CLASS_TEXT ni o'rnating.

Maxsus InputType yaratish mumkinmi?

Yangi InputType sinfini yaratish mumkin emas, chunki u Android framework-ning bir qismidir. Biroq, kerakli harakatga erishish uchun mavjud sinflar va bayroqlarni birlashtirish mumkin. Belgilarning qo'shimcha filtrlanishini InputFilter orqali amalga oshiring, u EditText-ga setFilters() metodi bilan o'rnatiladi.

InputType IME (klaviatura) ga qanday ta'sir qiladi?

InputType InputConnection orqali kiritish tizimiga uzatiladi. IME InputType sinfi va variatsiyasini o'qiydi va tegishli klaviatura layoutini tanlaydi. Masalan, TYPE_CLASS_NUMBER TYPE_NUMBER_FLAG_DECIMAL bilan klaviaturaning nuqtali raqam blokini ko'rsatishiga sabab bo'ladi. Zamonaviy klaviaturalarning aksariyati ushbu tavsiyalarga amal qiladi.

InputType-ni runtime-da qanday tekshirish mumkin?

Kotlin-da editText.inputType xususiyatidan yoki Java-da editText.getInputType() metodidan foydalaning. Sinfni chiqarish uchun maska qo'llang: inputType and InputType.TYPE_MASK_CLASS. Muayyan bayroqni tekshirish uchun: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — agar natija != 0 bo'lsa, bayroq o'rnatilgan.

Xulosa

  • InputType — kirish sinfi (TEXT, NUMBER, PHONE, DATETIME) va modifikatorlardan iborat bit maskasi.
  • Kirish sinfi asosiy ma'lumot turini va ko'rsatiladigan klaviatura turini belgilaydi.
  • Modifikatorlar harakatni aniqlashtiradi: ko'p qatorli, avtomatik tuzatish, katta harflar, yashirin kiritish.
  • Birlashtirish bitli OR orqali turli stsenariylar uchun aniq konfiguratsiyalar yaratishga imkon beradi.
  • PASSWORD variatsiyalari avtomatik tuzatishni o'chiradi, belgilarni yashiradi va lug'atga yozilishni oldini oladi.
  • Dasturiy o'rnatish setInputType() orqali klaviaturani yangilash uchun IME-ni qayta ishga tushirishni talab qiladi.
  • Eng yaxshi amaliyotlar — InputType-ni aniq belgilang, aniq turlardan foydalaning va turli klaviaturalarda sinab ko'ring.

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