Keyboard Type — nedir, klavye türleri ve Android’de giriş ayarı

Yazar: IT Sectr Yayınlanma: 2026-07-07 Okuma süresi: 9 dk

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 — Android’de android:inputType özniteliği tarafından tanımlanan klavye modu.
  • Ana türler — farklı giriş senaryoları için text, number, phone, email, textPassword, datetime.
  • Giriş optimizasyonu — doğru klavye türü form doldurmayı %20–40 hızlandırır.
  • Bayrak kombinasyonu — inputType, giriş sınıfını ve değiştiricileri (çok satırlı, otomatik düzeltme) birleştirir.
  • IME seçenekleri — imeOptions özniteliği klavyedeki eylem düğmesini (Done, Search, Next) kontrol eder.

Android’de Keyboard Type Nedir

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.

kotlin
// Programatik klavye türü ayarı
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL or
    InputType.TYPE_NUMBER_FLAG_SIGNED

Text — standart metin klavyesi

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.

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

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

Number — sayısal klavye

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.

  • number — pozitif tam sayılar (yaş, ürün miktarı).
  • numberDecimal — ondalık kısımlı sayılar (fiyat, ağırlık, boy).
  • numberSigned — işaretli sayılar (sıcaklık, koordinatlar).
  • numberPassword — PIN kodları için gizli rakam girişi.
kotlin
// 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

Phone ve Email — özelleşmiş klavyeler

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.

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 — şifreler için klavye

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.

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 Ayarlama

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.

Dinamik tür değiştirme

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

Geçerli türü kontrol etme

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

Keyboard Type belirtilmezse ne olur?

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.

"Enter" yerine "Bitti" düğmesi olan bir klavye nasıl oluşturulur?

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 klavye titreşimi devre dışı bırakılabilir mi?

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.

Metin kopyalama özelliğine sahip salt okunur bir alan nasıl oluşturulur?

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()’dan sonra klavye neden değişmiyor?

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

  • Keyboard Type, bir Android giriş alanı için klavyenin düzenini, filtrelemesini ve davranışını tanımlar.
  • text — otomatik düzeltme, büyük harf ve çok satırlı için değiştiricilere sahip standart QWERTY klavye.
  • number — signed ve decimal seçenekleriyle tam sayılar ve ondalıklar için sayısal klavye.
  • phone — rakamlar, +, #, * ve alfasayısal numara desteğiyle telefon klavyesi.
  • email — @, nokta ve alan adı uzantılarına hızlı erişime sahip klavye.
  • textPassword — otomatik düzeltme ve sözlük kaydı devre dışı bırakılmış gizli giriş.
  • imeOptions, klavyedeki eylem düğmesini (Done, Search, Next, Send) yapılandırır.

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.

Projeyi tartış

Ayrıca okuyun