Keyboard Type, Android’de belirli bir giriş alanı için görüntülenen karakter kümesini ve düzeni tanımlayan sanal klavye yapılandırmasıdır. Android birçok ön ayarlı türü destekler: text (standart metin), number (sayısal), phone (telefon), email (@ sembolü ile), textPassword (şifreler için), datetime ve diğerleri. Her tür, belirli bir görev için giriş arayüzünü optimize eder — örneğin, e-posta klavyesi ana ekranda @ sembolünü ve noktayı gösterir. Android Developers (2026)’ye göre, doğru Keyboard Type’ı seçmek, standart metin klavyesine kıyasla tuş vuruşu sayısını %20–40 oranında azaltır.
Anahtar Noktalar
Keyboard Type, XML’deki android:inputType öznitelik değeri veya kodda setInputType() programatik çağrısı ile belirlenir. InputType, giriş sınıfının değiştirici bayraklarla birleştirildiği bir bit maskesidir. Temel sınıflar şunlardır: metin için TYPE_CLASS_TEXT, sayılar için TYPE_CLASS_NUMBER, telefonlar için TYPE_CLASS_PHONE, tarih ve saatler için TYPE_CLASS_DATETIME.
Her Keyboard Type üç yönü etkiler: sanal klavye düzeni (ana ekranda hangi karakterlerin göründüğü), girilen karakterlerin filtrelenmesi (hangi karakterlere izin verildiği) ve otomatik düzeltme/otomatik tamamlama davranışı. Örneğin, sayı klavyesi yalnızca rakamları ve ondalık ayırıcıyı gösterir ve kullanıcı büyük/küçük harf değiştirse bile harfleri göstermez. Android Developers Documentation (2026)’ya göre, sınıfları bayraklarla birleştirmek, yüksek düzeyde özelleşmiş modlar oluşturmaya olanak tanır: otomatik düzeltmeli çok satırlı metin, kayan noktalı sayı, otomatik doldurma destekli şifre.
Keyboard Type’ın giriş sistemine (IME) bir öneri olduğunu anlamak önemlidir. Bazı üçüncü taraf klavyeler (Gboard, SwiftKey), kullanıcı kendi tercihlerini ayarlamışsa belirtilen türü kısmen görmezden gelebilir. Ancak, çoğu standart Android klavyesi ve Google Gboard, belirtilen giriş türüne kesinlikle uyar.
// Programatik klavye türü ayarı
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT metin girişi için temel sınıftır. Harfler, rakamlar ve sembollerle standart QWERTY klavyeyi etkinleştirir. Metin sınıfı, davranışı hassaslaştıran en fazla değiştiriciye sahiptir: TYPE_TEXT_FLAG_CAP_SENTENCES (cümle başında otomatik büyük harf), TYPE_TEXT_FLAG_AUTO_CORRECT (otomatik düzeltme), TYPE_TEXT_FLAG_MULTI_LINE (çok satırlı mod), TYPE_TEXT_FLAG_NO_SUGGESTIONS (önerileri devre dışı bırak).
Metin klavyesinin değiştiricileri, hassas yapılandırmalar oluşturmak için birleştirilebilir: örneğin, text|textCapSentences|textAutoCorrect, otomatik büyük harf ve yazım hatası düzeltmesinin gerekli olduğu bir yorum giriş alanı için uygundur. text|textNoSuggestions ise otomatik düzeltmenin zararlı olabileceği kod veya özel terimlerin girilmesi için kullanılır.
UX Stack Exchange (2025)’e göre, otomatik düzeltme etkin bir metin klavyesi, ortalama kullanıcı için yazma hızını %15–25 artırır, ancak teknik terimler (kod, URL, e-posta) için otomatik düzeltmenin devre dışı bırakılması önerilir çünkü genellikle doğru terimleri yanlış olanlarla değiştirir.
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER sayısal klavyeyi etkinleştirir, yalnızca rakamları, ondalık ayırıcıyı ve eksi işaretini gösterir. Bu tür, miktar, fiyat, yaş, kod ve diğer sayısal verilerin giriş alanları için kullanılır. Sayısal klavye, metin klavyesine göre daha az ekran alanı kaplar ve yanlışlıkla harf girilmesini önler.
Number‑ın üç değiştiricisi vardır: TYPE_NUMBER_FLAG_DECIMAL ondalık nokta/virgül ekler, TYPE_NUMBER_FLAG_SIGNED negatif sayılar için eksi işareti ekler, TYPE_NUMBER_VARIATION_PASSWORD — rakamların gizli karakterler olarak görüntülendiği PIN kodları için. number|numberDecimal|numberSigned kombinasyonu, herhangi bir işaretli kayan noktalı sayıları girmek için tam bir alan oluşturur.
// Ondalık noktalı sayısal giriş
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// Girilen sayıyı kontrol et
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE telefon klavyesini etkinleştirir, telefon numaraları için tipik rakamları ve karakterleri gösterir: +, #, *, (, ). Sayısal klavyenin aksine, phone ek bir modda harf düzenini de gösterir, çünkü telefon numaraları harf içerebilir (örneğin, 1-800-FLOWERS). Phone sınıfının ek bayrağı yoktur ancak dahili numara girişi için TYPE_TEXT_VARIATION_PHONE_ETC’yi destekler.
TYPE_TEXT_VARIATION_EMAIL_ADDRESS e-posta klavyesini etkinleştirir, @ sembolü ve nokta ana ekrandadır ve yaygın alan adı uzantıları (.com, .net, .org) da mevcuttur. Gboard, @’den sonra yazarken popüler alan adlarına sahip düğmeleri gösterir. E-posta klavyesi otomatik olarak otomatik düzeltmeyi devre dışı bırakır çünkü e-posta adresleri standart olmayan karakter kombinasyonları içerebilir.
Google Material Design Guidelines (2025)’e göre, telefon alanları için ayrıca izin verilen karakter kümesini sınırlayan android:digits özniteliğinin belirtilmesi önerilir. E-posta alanları için, parola yöneticilerinden ve Google Autofill’den otomatik doldurmayı desteklemek için autofillHints="email" belirtmek de önemlidir.
<!-- 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 ve TYPE_NUMBER_VARIATION_PASSWORD hassas veriler için giriş modlarıdır. textPassword ayarlandığında, girilen karakterler nokta veya yıldız işareti olarak görüntülenir (Android sürümüne ve klavyeye bağlı olarak). Bu moddaki klavye, otomatik düzeltmeyi ve girilen kelimelerin kullanıcı sözlüğüne kaydedilmesini devre dışı bırakarak, tahmine dayalı giriş özellikleri aracılığıyla şifre sızıntısını önler.
Password klavyesi ayrıca alan içeriğinin ekran görüntüsünü alma yeteneğini (FLAG_SECURE bayrağı) devre dışı bırakır, ancak bu davranış belirli klavye uygulamasına bağlıdır. Android 8.0 (API 26) ile başlayarak, şifre klavyeleri importantForAutofill="yes" özniteliği ayarlanmışsa parola yöneticileri aracılığıyla otomatik doldurmayı destekler.
Android Security Recommendations (2025)’e göre, şifre alanları için ayrıca şunlar önerilir: çok uzun şifreleri (veritabanı saldırı vektörü olabilir) önlemek için maxLength ayarlayın, kullanıcının formu göndermeden önce girilen şifreyi kontrol edebilmesi için inputType="textPassword"’yi TextInputLayout ve endIconMode="password_toggle" ile birlikte kullanın.
<!-- 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‑ın programatik olarak ayarlanması, bağlama veya kullanıcı girişine bağlı olarak klavye modunun dinamik olarak değiştirilmesine olanak tanır. Örneğin, alan türünü (metin/sayı/tarih) değiştirirken veya yerel ayarı değiştirirken. setInputType() yöntemi bir InputType bit maskesi kabul eder ve alan odaklanmışsa klavyeyi hemen günceller.
// Metin ve sayısal giriş arasında geçiş yap
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)
}
// Alanın sayısal olup olmadığını kontrol et
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// Otomatik düzeltmenin etkin olup olmadığını kontrol et
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
Sıkça Sorulan Sorular
inputType belirtilmezse, EditText varsayılan olarak TYPE_CLASS_TEXT’i TYPE_TEXT_FLAG_MULTI_LINE bayrağıyla kullanır. Bu, standart bir QWERTY klavye ve çok satırlı giriş anlamına gelir. Çoğu alan için, doğru klavye davranışı ve karakter filtrelemesi sağlamak için inputType’ın açıkça belirtilmesi önerilir.
EditText’te android:imeOptions="actionDone" özniteliğini kullanın. Bu, Enter düğmesini Bitti düğmesiyle değiştirecektir. Diğer seçenekler: actionSearch (büyütteç), actionNext (sağ ok), actionSend (gönder). Koddaki OnEditorActionListener aracılığıyla basma işlemini yönetin.
Belirli bir alan için titreşim devre dışı bırakılamaz — bu, klavye ayarlarında kullanıcı tarafından kontrol edilen bir sistem ayarıdır. Ancak, EditText’te android:focusable="false" özniteliğini ayarlayarak veya dispatchTouchEvent aracılığıyla görüntülemeyi geçersiz kılarak klavyenin tamamen görünmesini engelleyebilirsiniz.
android:inputType="none" ayarlayın veya programatik olarak editText.setKeyListener(null) çağrısını yapın. Alan metni görüntüler ancak odaklanıldığında klavye görünmez. Kullanıcı metni seçip kopyalayabilir ancak düzenleyemez. Alternatif olarak textIsSelectable="true" ile TextView kullanılabilir.
setInputType() çağrısından sonra, sistemi IME’yi otomatik olarak güncellemeyebileceğinden klavyeyi tekrar göstermeniz gerekir. Güncellemeyi zorlamak için InputMethodManager.restartInput(view) çağrısını yapın. Alan odaklanmamışsa, önce requestFocus()’u, ardından restartInput’u çağırın.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun