EditText — Android-da foydalanuvchi interfeysida matn kiritish va tahrirlash uchun mo'ljallangan asosiy komponent. U TextView-dan meros oladi va virtual yoki jismoniy klaviaturadan belgilar kiritish imkoniyatini beradi. EditText ko'plab rejimlarni qo'llab-quvvatlaydi: bir va ko'p qatorli matn, parollar, raqamlar, elektron pochta manzillari va telefon raqamlari. Android Developers (2026) ma'lumotlariga ko'ra, EditText Android ilovalarining 90% dan ko'prog'ida formalar, qidiruv maydonlari, chatlar va ma'lumot kiritish ekranlarini yaratish uchun ishlatiladi.
Asosiy ma'lumotlar
EditText — android.widget paketidagi foydalanuvchi tomonidan ma'lumot kiritish uchun interaktiv matn maydonini amalga oshiradigan sinf. Android meros ierarxiyasida EditText extends TextView, shuning uchun shriftlar, ranglar va tekislashni boshqarishni o'z ichiga olgan barcha matn yorlig'i xususiyatlarini meros oladi. EditText va TextView o'rtasidagi asosiy farq tarkibni tahrirlash qobiliyatidadir — foydalanuvchi to'g'ridan-to'g'ri interfeysda matn kiritishi, o'chirishi va o'zgartirishi mumkin.
Har bir EditText kiritilgan matnni saqlaydigan va belgilarni kiritish, o'chirish va almashtirish operatsiyalarini qo'llab-quvvatlaydigan Editable nusxasi bilan bog'langan. Matn kiritishda EditText avtomatik ravishda kursor o'rnini, matn tanlovini va bekor qilish (undo/redo) uchun o'zgarishlar tarixini boshqaradi. Android Developers Guide (2026) ma'lumotlariga ko'ra, EditText shuningdek EditText-dan meros oladigan AutoCompleteTextView sinfi orqali avtomatik to'ldirishni qo'llab-quvvatlaydi.
EditText arxitekturasi model (Editable), ko'rinish (TextView) va boshqaruvchi (InputConnection) ning ajratilishi asosida qurilgan. Fokus olganda EditText InputConnection yaratadi, u orqali kiritish tizimi belgilar, tugma bosishlar va tahrirlash buyruqlarini uzatadi. Bu mexanizm virtual klaviaturalardan tortib jismoniy Bluetooth klaviaturalari va ovozli kiritishgacha bo'lgan har qanday kiritish usullari bilan moslikni ta'minlaydi.
val editText = EditText(context).apply {
hint = "Matn kiriting"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText xatti-harakat va ko'rinishni aniq sozlash uchun o'nlab atributlarni taqdim etadi. Ularni XML layout-da ham, Kotlin yoki Java orqali dasturiy ravishda ham o'rnatish mumkin. Atributlar kategoriyalarga bo'linadi: matn boshqaruvi, cheklovlar, vizual ko'rinish va klaviatura bilan o'zaro aloqa.
| Atribut | Ta'rif | Misol qiymati |
|---|---|---|
| android:hint | Bo'sh maydonda ko'rsatiladigan maslahat matni | „Elektron pochtani kiriting" |
| android:inputType | Kiritish rejimi (matn, raqam, parol va h.k.) | textEmailAddress |
| android:maxLines | Maksimal qatorlar soni | 3 |
| android:maxLength | Belgilarda maksimal matn uzunligi | 100 |
| android:textColorHint | Maslahat matnining rangi | #999999 |
android:hint atributi eng muhimlaridan biridir — foydalanuvchiga maydonda qanday ma'lumotlar kutilayotganini bildiradi. Matn kiritishda hint avtomatik ravishda yashirinadi. Hint formani yuborishda ishtirok etmaydi va maydon qiymati sifatida saqlanmaydi. Material Design zamonaviyroq ko'rinish uchun oddiy hint o'rniga suzuvchi yorliqli TextInputLayout dan foydalanishni tavsiya qiladi.
<!-- 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 atributi foydalanuvchiga qanday turdagi klaviatura ko'rsatilishini va qaysi belgilarni kiritishga ruxsat berilganligini aniqlaydi. Bu kiritish sinfi (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) modifikatorlar bilan birlashtirilgan bit maskasidir.
Har bir kiritish rejimi nafaqat klaviatura layoutini o'zgartiradi, balki matnni qayta ishlashga ham ta'sir qiladi: raqam rejimida faqat raqamlar va o'nli ajratgichga ruxsat beriladi, elektron pochta rejimida @ belgisi va domen kengaytmalari mavjud, telefon rejimida esa raqamlar va +, #, * belgilari ko'rsatiladi. To'g'ri inputType tanlash foydalanuvchi tajribasiga muhim ta'sir ko'rsatadi — mos kelmaydigan klaviatura foydalanuvchini rejimlarni almashtirishga majbur qiladi, bu formani to'ldirish vaqtini 30–50% ga oshiradi.
Material Design Guidelines (2025) ma'lumotlariga ko'ra, har bir maydon uchun iloji boricha aniq inputType dan foydalanish tavsiya etiladi: parollar uchun textPassword, narxlar uchun numberDecimal, telefon raqamlari uchun phone, ko'p qatorli kiritish uchun textMultiLine. Bu formalarni to'ldirishni tezlashtiradi va kiritish xatolar sonini kamaytiradi.
// Dasturiy inputType sozlamasi
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher — EditText-dagi matn o'zgarishlarini real vaqtda kuzatish uchun interfeys. Uchta metodni o'z ichiga oladi: beforeTextChanged o'zgarishdan oldin chaqiriladi, onTextChanged — o'zgarish paytida, afterTextChanged — matn o'zgarishi tugagandan so'ng chaqiriladi. TextWatcher kiritishni tekshirish, belgilarni sanash, qidirish va avtomatik to'ldirish uchun ishlatiladi.
OnEditorActionListener foydalanuvchining klaviaturadagi harakatlarini qayta ishlaydi: Done (IME_ACTION_DONE), qidirish (IME_ACTION_SEARCH), yuborish (IME_ACTION_SEND), keyingi maydonga o'tish (IME_ACTION_NEXT) tugmalarini bosish va boshqalar. Bu tinglovchi ayniqsa forma navigatsiyasini tashkil qilish uchun foydalidir — Next bosilganda fokus avtomatik ravishda keyingi maydonga o'tadi, Done bosilganda esa klaviatura yashirinadi va yuborish amalga oshiriladi.
Android Developers Blog (2025) ma'lumotlariga ko'ra, OnEditorActionListener ni android:imeOptions atributi bilan to'g'ri ishlatish qo'shimcha yuborish tugmalarisiz intuitiv formalar yaratishga imkon beradi — foydalanuvchi maydonlarni to'ldiradi va klaviaturada Done tugmasini bosadi, bu saqlash yoki qidirishni ishga tushiradi.
// Elektron pochta tekshiruvi uchun 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 yuborish uchun OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
EditText yordamida elektron pochta va parol kiritish uchun kirish ekranini yaratishning to'liq namunasini ko'rib chiqaylik. Bu misolda inputType sozlash, TextWatcher orqali tekshirish va kirish tugmasini bosishni qayta ishlash ko'rsatilgan.
@+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 atributlari, mavzular va stillar orqali sozlashni qo'llab-quvvatlaydi. Matn rangini, maslahat rangini, pastki chiziq rangini (backgroundTint), shrift uslubini, matn o'lchamini va boshqa ko'p narsalarni o'zgartirish mumkin. Material Components boxStrokeColor, boxBackgroundColor va endIconMode kabi moslashtirilgan atributlarga ega MaterialComponents. EditText mavzusini taqdim etadi.
EditText ning pastki chiziq rangini o'zgartirish uchun android:backgroundTint atributi ishlatiladi, u standart holat va fokus holati uchun rangni o'rnatadi. Material Design da pastki chiziq rangi mavzuning colorPrimary orqali boshqariladi. To'liq sozlash uchun res/drawable papkasida fon uchun maxsus drawable yaratilishi mumkin.
| Stil | Atribut | Natija |
|---|---|---|
| Matn rangi | android:textColor | Kiritilgan matn rangini o'zgartiradi |
| Hint rangi | android:textColorHint | Maslahat matni rangini o'zgartiradi |
| Pastki chiziq | android:backgroundTint | Maydon ostidagi chiziq rangini o'zgartiradi |
| Shrift o'lchami | android:textSize | Matn o'lchamini sp da o'rnatadi |
| Shrift | android:fontFamily | Maxsus shriftni ulaydi |
Ilovadagi barcha EditText larning yagona stilini yaratish uchun mavzuda global stil belgilash tavsiya etiladi. Material Design TextInputLayout dan foydalanadigan barcha kiritish maydonlariga avtomatik ravishda qo'llaniladigan Widget.MaterialComponents.TextInputLayout.OutlinedBox stilini taklif qiladi. Bu har bir layoutda atributlarni takrorlamasdan izchil ko'rinishni ta'minlaydi.
Tez-tez so'raladigan savollar
EditText TextView dan meros oladi va matnni tahrirlash imkoniyatini qo'shadi. TextView faqat matnni ko'rsatadi, EditText esa foydalanuvchiga tarkibni kiritish, o'chirish va o'zgartirish imkonini beradi. EditText shuningdek inputType, TextWatcher, kursorni boshqarish va ma'lumot kiritish bilan bog'liq boshqa funksiyalarni qo'llab-quvvatlaydi.
InputFilter — kiritilgan belgilarni filtrlash uchun interfeysdan foydalaning. EditText setFilters() metodi orqali filtrlar massivini o'rnatishni qo'llab-quvvatlaydi. Masalan, InputFilter.LengthFilter matn uzunligini cheklaydi, maxsus InputFilter esa ma'lum belgilarni, muntazam ifodalarni yoki Unicode diapazonlarini taqiqlashi mumkin.
Kotlin da editText.text.toString() yoki Java da editText.getText().toString() metodini chaqiring. text xususiyati toString() orqali String ga aylantiriladigan Editable qaytaradi. Ishlatishdan oldin matnni null va bo'shligini tekshirish muhim, ayniqsa majburiy maydonlari bo'lgan formalarda.
android:inputType="textMultiLine" atributini o'rnating yoki dasturiy ravishda InputType.TYPE_TEXT_FLAG_MULTI_LINE bayrog'ini qo'shing. Ko'p qatorli rejimda EditText Enter bilan qatorni buzishga imkon beradi va avtomatik ravishda balandlikda oshadi. Balandlikni cheklash uchun android:maxLines yoki android:minLines dan foydalaning.
android:enabled="false" atributini o'rnating yoki kodda editText.isEnabled = false ni chaqiring. O'chirilgan EditText teginishlarga reaksiya bermaydi, fokus olmaydi va kul rangda (disabled state) ko'rsatiladi. Muqobil sifatida android:focusable="false" dan foydalanish mumkin, bu kiritishni o'chiradi, lekin oddiy ko'rinishni saqlaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.