Keyboard Type — Android-də virtual klaviaturanın konfiqurasiyasıdır ki, müəyyən daxiletmə sahəsi üçün göstərilən simvollar dəstini və düzülüşü müəyyən edir. Android bir çox əvvəlcədən təyin edilmiş növləri dəstəkləyir: text (standart mətn), number (rəqəm), phone (telefon), email (@ simvolu ilə), textPassword (parollar üçün), datetime və digərləri. Hər bir növ daxiletmə interfeysini konkret tapşırığa uyğun optimallaşdırır — məsələn, email klaviaturası əsas ekranda @ simvolu və nöqtəni göstərir. Android Developers (2026) məlumatlarına görə, Keyboard Type-nin düzgün seçilməsi standart mətn klaviaturası ilə müqayisədə daxiletmə zamanı vuruş sayını 20–40% azaldır.
Əsas məqamlar
Keyboard Type XML-də android:inputType atributunun dəyəri və ya kodda setInputType() proqram çağırışı ilə müəyyən edilir. InputType bit maskasıdır, burada daxiletmə sinfi (sinif) modifikator bayraqları ilə birləşdirilir. Əsas siniflər: mətn üçün TYPE_CLASS_TEXT, rəqəmlər üçün TYPE_CLASS_NUMBER, telefonlar üçün TYPE_CLASS_PHONE, tarix və vaxt üçün TYPE_CLASS_DATETIME.
Hər bir Keyboard Type üç aspektə təsir edir: virtual klaviaturanın düzülüşü (əsas ekranda hansı simvollar görünür), daxil edilən simvolların filtrasiyası (hansı simvollar icazəlidir) və avtomatik düzəltmə/avtomatik tamamlama davranışı. Məsələn, number klaviaturası yalnız rəqəmləri və onluq ayırıcını göstərir, istifadəçi registri dəyişsə belə hərfləri göstərmir. Android Developers Documentation (2026) məlumatlarına görə, siniflərin bayraqlarla birləşdirilməsi yüksək ixtisaslaşmış rejimlər yaratmağa imkan verir: avtomatik düzəltmə ilə çoxsətirli mətn, üzən nöqtəli rəqəm, avtomatik tamamlama imkanı olan parol.
Anlamaq vacibdir ki, Keyboard Type daxiletmə sistemi (IME) üçün tövsiyədir. Bəzi üçüncü tərəf klaviaturaları (Gboard, SwiftKey) istifadəçi öz seçimlərini konfiqurasiya edərsə, göstərilən növü qismən görməməzlikdən gələ bilər. Bununla belə, əksər standart Android klaviaturaları və Google Gboard göstərilən daxiletmə növünə ciddi şəkildə əməl edir.
// Klaviatura növünün proqram konfiqurasiyası
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT — mətn daxiletməsi üçün əsas sinif. O, hərflər, rəqəmlər və simvollarla standart QWERTY klaviaturasını aktivləşdirir. Text sinfi davranışı dəqiqləşdirən ən çox modifikatora malikdir: TYPE_TEXT_FLAG_CAP_SENTENCES (cümlənin əvvəlində avtomatik böyük hərf), TYPE_TEXT_FLAG_AUTO_CORRECT (avtomatik düzəltmə), TYPE_TEXT_FLAG_MULTI_LINE (çoxsətirli rejim), TYPE_TEXT_FLAG_NO_SUGGESTIONS (təkliflərin söndürülməsi).
Mətn klaviaturasının modifikatorları birləşdirilərək dəqiq konfiqurasiya yaradıla bilər: məsələn, text|textCapSentences|textAutoCorrect şərh daxiletmə sahəsi üçün uyğundur, burada avtomatik böyük hərf və səhvlərin düzəldilməsi lazımdır. text|textNoSuggestions isə kod və ya xüsusi terminlərin daxil edilməsi üçün istifadə olunur, burada avtomatik düzəltmə zərər verə bilər.
UX Stack Exchange (2025) məlumatlarına görə, avtomatik düzəltmə aktiv olan mətn klaviaturası orta istifadəçi üçün daxiletməni 15–25% sürətləndirir, lakin texniki terminlər (kod, URL, email) üçün avtomatik düzəltməni söndürmək tövsiyə olunur, çünki o, tez-tez düzgün terminləri səhv olanlarla əvəz edir.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER yalnız rəqəmləri, onluq ayırıcını və mənfi işarəsini göstərən rəqəm klaviaturasını aktivləşdirir. Bu növ miqdar, qiymət, yaş, kodlar və digər rəqəm məlumatlarının daxil edilməsi sahələri üçün istifadə olunur. Rəqəm klaviaturası ekranda mətn klaviaturasından daha az yer tutur və təsadüfi hərf daxil edilməsini istisna edir.
Number üç modifikatora malikdir: TYPE_NUMBER_FLAG_DECIMAL onluq nöqtəni/vergülü əlavə edir, TYPE_NUMBER_FLAG_SIGNED mənfi ədədlər üçün mənfi işarəsini əlavə edir, TYPE_NUMBER_VARIATION_PASSWORD — PIN-kodlar üçün, burada rəqəmlər gizli simvollar kimi göstərilir. number|numberDecimal|numberSigned kombinasiyası istənilən işarəli üzən nöqtəli ədədlərin daxil edilməsi üçün tam hüquqlu sahə yaradır.
// Onluq nöqtə ilə rəqəm daxiletməsi
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Daxil edilmiş nömrəni yoxlayın
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE telefon nömrələri üçün xarakterik olan rəqəmləri və simvolları göstərən telefon klaviaturasını aktivləşdirir: +, #, *, (, ). Number klaviaturasından fərqli olaraq, phone əlavə rejimdə hərf düzülüşünü də göstərir, çünki telefon nömrələrində hərflər ola bilər (məsələn, 1-800-FLOWERS). Phone sinfinin əlavə bayraqları yoxdur, lakin daxili nömrələrin daxil edilməsi üçün TYPE_TEXT_VARIATION_PHONE_ETC dəstəkləyir.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS email klaviaturasını aktivləşdirir, burada @ simvolu və nöqtə əsas ekranda yerləşir, həmçinin tez-tez istifadə olunan domen genişləntmələri (.com, .net, .org) mövcuddur. Gboard @ işarəsindən sonra daxiletmə zamanı əlavə olaraq məşhur domenlərlə düymələri göstərir. Email klaviaturası avtomatik olaraq avtomatik düzəltməni söndürür, çünki email ünvanları qeyri-standart simvol kombinasiyaları ehtiva edə bilər.
Google Material Design Guidelines (2025) məlumatlarına görə, telefon sahələri üçün əlavə olaraq android:digits atributunu göstərmək tövsiyə olunur ki, bu da icazə verilən simvollar dəstini məhdudlaşdırır. Email sahələri üçün həmçinin parol meneceri və Google Autofill-dən avtomatik doldurulmanı dəstəkləmək üçün autofillHints="email" göstərmək vacibdir.
<!-- 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 və TYPE_NUMBER_VARIATION_PASSWORD — məxfi məlumatların daxil edilməsi rejimləridir. textPassword təyin edildikdə, daxil edilən simvollar nöqtələr və ya ulduzlar şəklində göstərilir (Android versiyasından və klaviaturadan asılı olaraq). Bu rejimdə klaviatura avtomatik düzəltməni və daxil edilən sözlərin istifadəçi lüğətinə yadda saxlanmasını söndürür, proqnozlaşdırıcı daxiletmə funksiyaları vasitəsilə parol sızmasının qarşısını alır.
Password klaviaturası həmçinin sahənin məzmununun ekran görüntüsünün çəkilməsi imkanını söndürür (FLAG_SECURE bayrağı), baxmayaraq ki, bu davranış konkret klaviaturanın tətbiqindən asılıdır. Android 8.0-dan (API 26) başlayaraq, parol klaviaturaları importantForAutofill="yes" atributu təyin edildikdə, parol menecerləri vasitəsilə avtomatik doldurulmanı dəstəkləyir.
Android Security Recommendations (2025) məlumatlarına görə, parol sahələri üçün həmçinin tövsiyə olunur: çox uzun parolların qarşısını almaq üçün maxLength təyin etmək (bunlar verilənlər bazasına hücum ola bilər), istifadəçinin formanı göndərməzdən əvvəl daxil edilmiş parolu yoxlaya bilməsi üçün inputType="textPassword" TextInputLayout və endIconMode="password_toggle" ilə birlikdə istifadə etmək.
<!-- 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-nin proqram konfiqurasiyası kontekstdən və ya istifadəçi daxiletməsindən asılı olaraq klaviatura rejimini dinamik dəyişməyə imkan verir. Məsələn, sahə növünü dəyişdirərkən (mətn/rəqəm/tarix) və ya lokali dəyişdirərkən. setInputType() metodu InputType bit maskasını qəbul edir və sahə fokusda olduqda klaviaturanı dərhal yeniləyir.
// Mətn və rəqəm daxiletməsi arasında keçid
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)
}
// Sahənin rəqəm olub olmadığını yoxlayın
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Avtomatik düzəltmənin aktiv olub olmadığını yoxlayın
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Tez-tez verilən suallar
Əgər inputType göstərilməyibsə, EditText standart olaraq TYPE_TEXT_FLAG_MULTI_LINE bayrağı ilə TYPE_CLASS_TEXT istifadə edir. Bu, standart QWERTY klaviaturası və çoxsətirli daxiletmə deməkdir. Əksər sahələr üçün klaviaturanın düzgün davranışını və simvol filtrasiyasını təmin etmək üçün inputType-ni açıq şəkildə göstərmək tövsiyə olunur.
EditText-də android:imeOptions="actionDone" atributundan istifadə edin. Bu, Enter düyməsini Done düyməsi ilə əvəz edəcək. Digər variantlar: actionSearch (lupa), actionNext (sağ ox), actionSend (göndərmə). Düymənin basılmasının işlənməsini kodda OnEditorActionListener vasitəsilə həyata keçirin.
Konkret sahə üçün vibrasiyanı söndürmək mümkün deyil — bu, istifadəçi tərəfindən klaviatura parametrlərində idarə olunan sistem parametridir. Bununla belə, EditText-də android:focusable="false" atributu təyin etməklə və ya dispatchTouchEvent vasitəsilə göstərilməni ləğv etməklə klaviaturanın tamamilə görünməsinin qarşısını almaq olar.
android:inputType="none" təyin edin və ya proqram olaraq editText.setKeyListener(null) çağırın. Sahə mətni göstərəcək, lakin fokusda klaviatura görünməyəcək. İstifadəçi mətni seçib kopyalaya biləcək, lakin dəyişdirə bilməyəcək. Alternativ — textIsSelectable="true" ilə TextView istifadə etmək.
setInputType() çağırışından sonra klaviaturanı yenidən göstərmək lazımdır, çünki sistem İME-ni avtomatik yeniləməyə bilər. Məcburi yeniləmə üçün InputMethodManager.restartInput(view) çağırın. Sahə fokusda deyilsə, əvvəlcə requestFocus(), sonra restartInput çağırın.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun