EditText — Android-də istifadəçi interfeysində mətn daxil etmək və redaktə etmək üçün nəzərdə tutulmuş əsas komponentdir. O, TextView-dən miras alır və virtual və ya fiziki klaviaturadan simvol daxil etmə imkanı verir. EditText bir çox rejimi dəstəkləyir: tək və çoxsətirli mətn, parollar, rəqəmlər, e-poçt ünvanları və telefon nömrələri. Android Developers (2026)-ə görə, EditText Android tətbiqlərinin 90%-dən çoxunda formalar, axtarış sahələri, söhbətlər və məlumat daxiletmə ekranları yaratmaq üçün istifadə olunur.
Əsas məqamlar
EditText — android.widget paketindən olan, istifadəçi tərəfindən məlumat daxil etmək üçün interaktiv mətn sahəsini həyata keçirən sinifdir. Android miras iyerarxiyasında EditText extends TextView, buna görə də şrift, rəng və düzləndirmə idarəetməsi daxil olmaqla bütün mətn etiketi xüsusiyyətlərini miras alır. EditText və TextView arasındakı əsas fərq məzmunu redaktə etmək imkanıdır — istifadəçi birbaşa interfeysdə mətn daxil edə, silə və dəyişə bilər.
Hər bir EditText daxil edilmiş mətni saxlayan və simvolların daxil edilməsi, silinməsi və dəyişdirilməsi əməliyyatlarını dəstəkləyən Editable nümunəsi ilə əlaqəlidir. Mətn daxil edərkən EditText avtomatik olaraq kursor mövqeyini, mətn seçimini və ləğv etmək (undo/redo) üçün dəyişiklik tarixçəsini idarə edir. Android Developers Guide (2026)-yə görə, EditText həmçinin EditText-dən miras alan AutoCompleteTextView sinifi vasitəsilə avtomatik tamamlamağı dəstəkləyir.
EditText arxitekturası model (Editable), görünüş (TextView) və nəzarətçinin (InputConnection) ayrılması üzərində qurulub. Fokus aldıqda EditText InputConnection yaradır, onun vasitəsilə daxiletmə sistemi simvolları, düymə vuruşlarını və redaktə əmrlərini ötürür. Bu mexanizm virtual klaviaturalardan tutmuş fiziki Bluetooth klaviaturaları və səsli daxiletməyə qədər istənilən daxiletmə üsulları ilə uyğunluğu təmin edir.
val editText = EditText(context).apply {
hint = "Mətn daxil edin"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText davranışı və görünüşü dəqiq tənzimləmək üçün onlarla atribut təqdim edir. Onlar həm XML layout-da, həm də Kotlin və ya Java vasitəsilə proqramlı şəkildə təyin edilə bilər. Atributlar kateqoriyalara bölünür: mətn idarəetməsi, məhdudiyyətlər, vizual görünüş və klaviatura ilə qarşılıqlı əlaqə.
| Atribut | Izah | Nümunə dəyər |
|---|---|---|
| android:hint | Boş sahədə göstərilən ipucu mətni | „E-poçt daxil edin" |
| android:inputType | Daxiletmə rejimi (mətn, rəqəm, parol və s.) | textEmailAddress |
| android:maxLines | Maksimum sətir sayı | 3 |
| android:maxLength | Simvollarda maksimum mətn uzunluğu | 100 |
| android:textColorHint | İpucu mətninin rəngi | #999999 |
android:hint atributu ən vaciblərindən biridir — istifadəçiyə sahədə hansı məlumatların gözlənildiyini bildirir. Mətn daxil edərkən hint avtomatik olaraq gizlənir. Hint formanın göndərilməsində iştirak etmir və sahə dəyəri kimi saxlanmır. Material Design daha müasir görünüş üçün sadə hint əvəzinə üzən etiketli TextInputLayout-dan istifadə etməyi tövsiyə edir.
<!-- 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" />
inputType atributu istifadəçiyə hansı növ klaviaturanın göstəriləcəyini və hansı simvolların daxil edilməsinə icazə verildiyini müəyyən edir. Bu, daxiletmə sinfinin (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) modifierlərlə birləşdirildiyi bit maskasıdır.
Hər bir daxiletmə rejimi təkcə klaviatura layoutunu dəyişmir, həm də mətnin emalına təsir edir: rəqəm rejimində yalnız rəqəmlər və onluq ayırıcıya icazə verilir, e-poçt rejimində @ simvolu və domen genişləndirmələri mövcuddur, telefon rejimində isə rəqəmlər və +, #, * simvolları göstərilir. Düzgün inputType seçimi istifadəçi təcrübəsinə kritik təsir göstərir — uyğun olmayan klaviatura istifadəçini rejimləri dəyişməyə məcbur edir ki, bu da formanın doldurulma müddətini 30–50% artırır.
Material Design Guidelines (2025)-yə görə, hər bir sahə üçün mümkün qədər konkret inputType istifadə etmək tövsiyə olunur: parollar üçün textPassword, qiymətlər üçün numberDecimal, telefon nömrələri üçün phone, çoxsətirli daxiletmə üçün textMultiLine. Bu, formaların doldurulmasını sürətləndirir və daxiletmə xətalarının sayını azaldır.
// Proqramlı inputType quraşdırması
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher — EditText-də mətn dəyişikliklərini real vaxtda izləmək üçün interfeysdir. Üç metodu var: beforeTextChanged dəyişiklikdən əvvəl çağrılır, onTextChanged — dəyişiklik zamanı, afterTextChanged — mətn dəyişikliyi başa çatdıqdan sonra çağrılır. TextWatcher daxiletmənin validasiyası, simvolların sayılması, axtarış və avtomatik tamamlama üçün istifadə olunur.
OnEditorActionListener istifadəçinin klaviaturada hərəkətlərini emal edir: Done (IME_ACTION_DONE), axtarış (IME_ACTION_SEARCH), göndərmə (IME_ACTION_SEND), növbəti sahəyə keçid (IME_ACTION_NEXT) düymələrinin basılması və digərləri. Bu dinləyici xüsusilə forma naviqasiyasını təşkil etmək üçün faydalıdır — Next basıldıqda fokus avtomatik olaraq növbəti sahəyə keçir, Done basıldıqda isə klaviatura gizlənir və göndərmə yerinə yetirilir.
Android Developers Blog (2025)-ə görə, OnEditorActionListener-in android:imeOptions atributu ilə düzgün istifadəsi əlavə göndərmə düymələri olmadan intuitiv formalar yaratmağa imkan verir — istifadəçi sahələri doldurur və klaviaturada Done basır, bu da yadda saxlanmanı və ya axtarışı işə salır.
// E-poçt validasiyası üçün 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"
}
})
// Forma göndərilməsi üçün OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
EditText istifadə edərək e-poçt və parol daxil etmək üçün giriş ekranı yaratmağın tam nümunəsini nəzərdən keçirək. Bu nümunədə inputType konfiqurasiyası, TextWatcher vasitəsilə validasiya və giriş düyməsinin basılmasının emalı göstərilir.
@+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" />
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 XML atributları, mövzular və stillər vasitəsilə fərdiləşdirməni dəstəkləyir. Mətn rəngini, ipucu rəngini, alt xətt rəngini (backgroundTint), şrift stilini, mətn ölçüsünü və daha çoxunu dəyişmək olar. Material Components fərdi atributlarla MaterialComponents. EditText mövzusunu təqdim edir, o cümlədən boxStrokeColor, boxBackgroundColor və endIconMode.
EditText-in alt xətt rəngini dəyişmək üçün android:backgroundTint atributundan istifadə olunur, o, default vəziyyət və fokus vəziyyəti üçün rəng təyin edir. Material Design-də alt xətt rəngi mövzunun colorPrimary vasitəsilə idarə olunur. Tam fərdiləşdirmə üçün res/drawable qovluğunda fon üçün fərdi drawable yaradıla bilər.
| Stil | Atribut | Nəticə |
|---|---|---|
| Mətn rəngi | android:textColor | Daxil edilmiş mətnin rəngini dəyişir |
| Hint rəngi | android:textColorHint | İpucu mətninin rəngini dəyişir |
| Alt xətt | android:backgroundTint | Sahənin altındakı xəttin rəngini dəyişir |
| Şrift ölçüsü | android:textSize | Mətn ölçüsünü sp-də təyin edir |
| Şrift | android:fontFamily | Fərdi şrifti qoşur |
Tətbiqdə bütün EditText-lərin vahid stilini yaratmaq üçün mövzuda qlobal stil təyin etmək tövsiyə olunur. Material Design TextInputLayout istifadə edən bütün daxiletmə sahələrinə avtomatik tətbiq olunan Widget.MaterialComponents.TextInputLayout.OutlinedBox stilini təklif edir. Bu, hər layout-da atributları təkrarlamadan ardıcıl görünüşü təmin edir.
Tez-tez verilən suallar
EditText TextView-dən miras alır və mətn redaktəsi imkanı əlavə edir. TextView yalnız mətni göstərir, EditText isə istifadəçiyə məzmunu daxil etməyə, silməyə və dəyişməyə imkan verir. EditText həmçinin inputType, TextWatcher, kursor idarəetməsi və məlumat daxiletməsi ilə bağlı digər funksiyaları dəstəkləyir.
InputFilter — daxil edilən simvolları filtrləmək üçün interfeysdən istifadə edin. EditText setFilters() metodu vasitəsilə filtr massivinin quraşdırılmasını dəstəkləyir. Məsələn, InputFilter.LengthFilter mətnin uzunluğunu məhdudlaşdırır, fərdi InputFilter isə müəyyən simvolları, müntəzəm ifadələri və ya Unicode diapazonlarını qadağan edə bilər.
Kotlin-də editText.text.toString() və ya Java-da editText.getText().toString() metodunu çağırın. text xassəsi Editable qaytarır, o, toString() vasitəsilə String-ə çevrilir. İstifadədən əvvəl mətni null və boşluq üçün yoxlamaq vacibdir, xüsusən məcburi sahələri olan formalarda.
android:inputType="textMultiLine" atributunu təyin edin və ya proqramlı şəkildə InputType.TYPE_TEXT_FLAG_MULTI_LINE bayrağını əlavə edin. Çoxsətirli rejimdə EditText Enter ilə sətir qırmaya imkan verir və avtomatik olaraq hündürlükdə artır. Hündürlüyü məhdudlaşdırmaq üçün android:maxLines və ya android:minLines istifadə edin.
android:enabled="false" atributunu təyin edin və ya kodda editText.isEnabled = false çağırın. Söndürülmüş EditText toxunmalara reaksiya vermir, fokus almır və boz rəngdə göstərilir (disabled state). Alternativ olaraq android:focusable="false" istifadə edilə bilər, bu, daxiletməni söndürür, lakin normal görünüşü saxlayır.
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