EditText: nedir, nitelikleri ve Android'de giriş alanı ile çalışma

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

EditText, kullanıcı arayüzünde metin girmek ve düzenlemek için tasarlanmış temel bir Android bileşenidir. TextView'den miras alır ve sanal veya fiziksel klavyelerden karakter girişine izin verir. EditText birçok modu destekler: tek satırlı ve çok satırlı metin, parolalar, sayılar, e-posta adresleri ve telefon numaraları. Android Developers (2026)'ya göre EditText, Android uygulamalarının %90'ından fazlasında formlar, arama alanları, sohbetler ve veri giriş ekranları oluşturmak için kullanılır.

Önemli Noktalar

  • EditText — Android'de temel metin giriş bileşeni, TextView'in alt sınıfı.
  • Giriş modları — metin, sayı, parola, e-posta, telefon ve çok satırlı girişi destekler.
  • XML nitelikleri — inputType, maxLines, hint, textColorHint ve diğer parametrelerle yapılandırma.
  • Dinleyiciler — TextWatcher değişiklikleri izlemek için, OnEditorActionListener eylemleri işlemek için.
  • Material Design — TextInputLayout, EditText'i kayan etiket ve hata mesajlarıyla genişletir.

Android'de EditText Nedir

EditText, android.widget paketinden kullanıcı veri girişi için etkileşimli bir metin alanı uygulayan bir sınıftır. Android kalıtım hiyerarşisinde EditText, TextView'i genişletir, bu nedenle yazı tipi, renk ve hizalama yönetimi dahil olmak üzere bir metin etiketinin tüm özelliklerini miras alır. EditText ve TextView arasındaki temel fark, içeriği düzenleme yeteneğidir — kullanıcı arayüzde doğrudan metin girebilir, silebilir ve değiştirebilir.

Her EditText, girilen metni depolayan ve ekleme, silme ve değiştirme işlemlerini destekleyen bir Editable örneği ile ilişkilidir. Yazarken EditText, otomatik olarak imleç konumunu, metin seçimini ve geri al/tekrarla için değişiklik geçmişini yönetir. Android Developers Guide (2026)'ya göre EditText, EditText'ten miras alan AutoCompleteTextView sınıfı aracılığıyla otomatik tamamlamayı da destekler.

EditText mimarisi, model (Editable), görünüm (TextView) ve denetleyici (InputConnection) ayrımına dayanır. Odak aldığında EditText, giriş sisteminin karakterleri, tuş vuruşlarını ve düzenleme komutlarını ilettiği bir InputConnection oluşturur. Bu mekanizma, sanal klavyelerden fiziksel Bluetooth klavyelere ve sesli girişe kadar her giriş yöntemiyle uyumluluk sağlar.

kotlin
val editText = EditText(context).apply {
    hint = "Metin girin"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

EditText'in Temel Nitelikleri

EditText, davranışı ve görünümü ince ayar yapmak için düzinelerce nitelik sağlar. Bunlar hem XML düzenlerinde hem de Kotlin veya Java aracılığıyla programlı olarak ayarlanabilir. Nitelikler kategorilere ayrılır: metin kontrolü, kısıtlamalar, görsel stil ve klavye etkileşimi.

NitelikAçıklamaÖrnek değer
android:hintBoş alanda görünen ipucu metni"E-posta girin"
android:inputTypeGiriş modu (metin, sayı, parola, vb.)textEmailAddress
android:maxLinesMaksimum satır sayısı3
android:maxLengthKarakter cinsinden maksimum metin uzunluğu100
android:textColorHintİpucu metninin rengi#999999

android:hint niteliği en önemlilerinden biridir — kullanıcıya alanda hangi verilerin beklendiğini söyler. Metin girildiğinde ipucu otomatik olarak gizlenir. İpucu form gönderimine katılmaz ve alan değeri olarak kaydedilmez. Material Design, daha modern bir görünüm için basit ipucu yerine kayan etiketli TextInputLayout kullanılmasını önerir.

  • android:selectAllOnFocus — odak aldığında tüm metni seçer (arama alanları için kullanışlı).
  • android:maxLength — girilen karakter sayısını sınırlar, fazlasını keser.
  • android:lines — alanın satır cinsinden sabit yüksekliğini ayarlar (minLines'ın aksine).
  • android:gravity — alan içinde metin hizalaması: left, center, top, vb.
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

Giriş Modları ve inputType

inputType niteliği, kullanıcıya hangi klavye türünün gösterileceğini ve giriş için hangi karakterlere izin verildiğini belirler. Giriş sınıfının (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) değiştiricilerle birleştirildiği bir bit maskesidir.

Her giriş modu yalnızca klavye düzenini değiştirmekle kalmaz, aynı zamanda metin işlemeyi de etkiler: sayı modunda yalnızca rakamlar ve ondalık ayırıcılara izin verilir, e-posta modunda @ sembolü ve alan adı uzantıları mevcuttur ve telefon modunda rakamlar ve +, #, * sembolleri görüntülenir. Doğru inputType seçimi kullanıcı deneyimini kritik şekilde etkiler — uygun olmayan bir klavye kullanıcıları mod değiştirmeye zorlar ve form doldurma süresini %30-50 oranında artırır.

Material Design Guidelines (2025)'ya göre her alan için en spesifik inputType'ın kullanılması önerilir: parolalar için textPassword, fiyatlar için numberDecimal, telefon numaraları için phone, çok satırlı giriş için textMultiLine. Bu, form doldurmayı hızlandırır ve giriş hatalarını azaltır.

kotlin
// Programlı inputType kurulumu
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

EditText Dinleyicileri: TextWatcher ve OnEditorActionListener

TextWatcher, EditText'teki metin değişikliklerini gerçek zamanlı olarak izlemek için bir arayüzdür. Üç yöntem içerir: beforeTextChanged bir değişiklikten önce çağrılır, onTextChanged değişiklik sırasında çağrılır, afterTextChanged metin değişikliği tamamlandıktan sonra çağrılır. TextWatcher, giriş doğrulaması, karakter sayma, arama ve otomatik tamamlama için kullanılır.

OnEditorActionListener, klavyedeki kullanıcı eylemlerini işler: Done (IME_ACTION_DONE), Search (IME_ACTION_SEARCH), Send (IME_ACTION_SEND), Next (IME_ACTION_NEXT) ve diğerlerine basma. Bu dinleyici, form navigasyonunu düzenlemek için özellikle kullanışlıdır — Next'e basıldığında odak otomatik olarak sonraki alana geçer ve Done'a basıldığında klavye gizlenir ve gönderim gerçekleştirilir.

Android Developers Blog (2025)'a göre, android:imeOptions niteliğiyle OnEditorActionListener'ın doğru kullanımı, ek gönder düğmesi olmadan sezgisel formlar oluşturmayı sağlar — kullanıcı alanları doldurur ve klavyede Done'a basar, bu da kaydetmeyi veya aramayı tetikler.

kotlin
// E-posta doğrulaması için TextWatcher
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// Form gönderimi için OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

EditText ile Kod Örnekleri

E-posta ve parola girişi için EditText kullanarak bir giriş ekranı oluşturmanın tam bir örneğini inceleyelim. Bu örnek, inputType yapılandırmasını, TextWatcher aracılığıyla doğrulamayı ve giriş düğmesine basma işlemini gösterir.

Giriş Ekranı XML Düzeni

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

EditText'in Programlı Kurulumu

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

EditText Stil Verme

EditText, XML nitelikleri, temalar ve stiller aracılığıyla özelleştirmeyi destekler. Metin rengi, ipucu rengi, alt çizgi rengi (backgroundTint), yazı tipi stili, metin boyutu ve çok daha fazlası değiştirilebilir. Material Components, boxStrokeColor, boxBackgroundColor ve endIconMode dahil özel niteliklere sahip MaterialComponents.EditText temasını sağlar.

EditText'in alt çizgi rengini değiştirmek için, varsayılan ve odak durumları için rengi ayarlayan android:backgroundTint niteliğini kullanın. Material Design'da alt çizgi rengi, temanın colorPrimary'si aracılığıyla yönetilir. Tam özelleştirme için res/drawable klasöründe arka plan için özel bir drawable oluşturabilirsiniz.

StilNitelikSonuç
Metin rengiandroid:textColorGirilen metnin rengini değiştirir
İpucu rengiandroid:textColorHintİpucu metninin rengini değiştirir
Alt çizgiandroid:backgroundTintAlanın altındaki çizginin rengini değiştirir
Yazı boyutuandroid:textSizeMetin boyutunu sp cinsinden ayarlar
Yazı tipiandroid:fontFamilyÖzel yazı tipi uygular

Uygulamanızdaki tüm EditText alanları için tutarlı bir stil oluşturmak için, temada küresel bir stil tanımlamanız önerilir. Material Design, TextInputLayout kullanan tüm giriş alanlarına otomatik olarak uygulanan Widget.MaterialComponents.TextInputLayout.OutlinedBox stilini sunar. Bu, her düzende nitelikleri tekrarlamadan tutarlı bir görünüm sağlar.

Sıkça Sorulan Sorular

EditText ve TextView arasındaki fark nedir?

EditText, TextView'den miras alır ve metin düzenleme yetenekleri ekler. TextView yalnızca metni görüntülerken, EditText kullanıcının içerik girmesine, silmesine ve değiştirmesine olanak tanır. EditText ayrıca inputType, TextWatcher, imleç yönetimi ve veri girişiyle ilgili diğer işlevleri de destekler.

EditText'te belirli karakterler nasıl kısıtlanır?

InputFilter kullanın — giriş karakterlerini filtrelemek için bir arayüz. EditText, setFilters() yöntemi aracılığıyla bir filtre dizisi ayarlamayı destekler. Örneğin, InputFilter.LengthFilter metin uzunluğunu sınırlarken, özel bir InputFilter belirli karakterleri, normal ifadeleri veya Unicode aralıklarını kısıtlayabilir.

Kod içinde EditText'ten metin nasıl alınır?

Kotlin'de editText.text.toString() veya Java'da editText.getText().toString() çağrısını yapın. text özelliği Editable döndürür ve toString() ile String'e dönüştürülür. Metni kullanmadan önce, özellikle zorunlu alanları olan formlarda, her zaman null ve boş değerleri kontrol edin.

EditText çok satırlı nasıl yapılır?

android:inputType="textMultiLine" niteliğini ayarlayın veya programlı olarak InputType.TYPE_TEXT_FLAG_MULTI_LINE bayrağını ekleyin. Çok satırlı modda EditText, Enter ile satır sonlarına izin verir ve yükseklikte otomatik olarak genişler. Yüksekliği sınırlamak için android:maxLines veya android:minLines kullanın.

Düzenleme için EditText nasıl devre dışı bırakılır?

android:enabled="false" niteliğini ayarlayın veya kodda editText.isEnabled = false çağrısını yapın. Devre dışı bırakılmış EditText dokunmaya yanıt vermez, odak alamaz ve gri renkte görüntülenir (devre dışı durum). Bir alternatif, girişi devre dışı bırakan ancak normal görünümü koruyan android:focusable="false" kullanmaktır.

Özet

  • EditText — Android'de temel metin giriş bileşeni, düzenleme desteğiyle TextView'in alt sınıfı.
  • inputType klavye modunu ve izin verilen karakterleri belirler: metin, sayı, e-posta, telefon, parola.
  • TextWatcher, doğrulama ve otomatik tamamlama için metin değişikliklerini gerçek zamanlı izlemeye olanak tanır.
  • OnEditorActionListener klavye eylemlerini işler: Done, Search, Next, Send.
  • InputFilter özel filtreler aracılığıyla giriş karakterlerini ve metin uzunluğunu sınırlar.
  • Nitelikler hint, maxLines, maxLength, textColorHint davranışı ve görünümü yapılandırır.
  • Material Design TextInputLayout aracılığıyla kayan etiketler ve hatalarla modern bir görünüm sağlar.

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