EditText: bu nima, atributlari va Android-da matn kiritish maydoni bilan ishlash

Muallif: IT Sectr Nashr etilgan: 2026-07-07 O'qish vaqti: 9 daq

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-da matn kiritish uchun asosiy komponent, TextView vorisi.
  • Kiritish rejimlari — matn, raqamlar, parollar, elektron pochta, telefon va ko'p qatorli kiritishni qo'llab-quvvatlaydi.
  • XML atributlari — inputType, maxLines, hint, textColorHint va boshqa parametrlar orqali sozlash.
  • Tinglovchilar — o'zgarishlarni kuzatish uchun TextWatcher va harakatlarni qayta ishlash uchun OnEditorActionListener.
  • Material Design — TextInputLayout EditText-ni suzuvchi yorliq va xato xabarlari bilan kengaytiradi.

Android-da EditText nima

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.

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

EditText-ning asosiy atributlari

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.

AtributTa'rifMisol qiymati
android:hintBo'sh maydonda ko'rsatiladigan maslahat matni„Elektron pochtani kiriting"
android:inputTypeKiritish rejimi (matn, raqam, parol va h.k.)textEmailAddress
android:maxLinesMaksimal qatorlar soni3
android:maxLengthBelgilarda maksimal matn uzunligi100
android:textColorHintMaslahat 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.

  • android:selectAllOnFocus — fokus olganda butun matnni tanlaydi (qidiruv maydonlari uchun qulay).
  • android:maxLength — kiritilgan belgilar sonini cheklaydi, ortig'ini kesadi.
  • android:lines — maydonning qatordagi qat'iy balandligini o'rnatadi (minLines dan farqli o'laroq).
  • android:gravity — maydon ichidagi matnni tekislash: left, center, top va h.k.
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" />

Kiritish rejimlari va inputType

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.

kotlin
// Dasturiy inputType sozlamasi
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

EditText tinglovchilari: TextWatcher va OnEditorActionListener

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.

kotlin
// 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 bilan kod namunalari

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.

Kirish ekranining XML layouti

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-ni dasturiy sozlash

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-ni stillashtirish

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.

StilAtributNatija
Matn rangiandroid:textColorKiritilgan matn rangini o'zgartiradi
Hint rangiandroid:textColorHintMaslahat matni rangini o'zgartiradi
Pastki chiziqandroid:backgroundTintMaydon ostidagi chiziq rangini o'zgartiradi
Shrift o'lchamiandroid:textSizeMatn o'lchamini sp da o'rnatadi
Shriftandroid:fontFamilyMaxsus 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 va TextView o'rtasidagi farq nima?

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.

EditText-da ma'lum belgilarni kiritishni qanday taqiqlash mumkin?

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.

EditText dan matnni kodda qanday olish 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.

EditText ni ko'p qatorli qanday qilish mumkin?

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.

EditText ni tahrirlash uchun qanday o'chirish mumkin?

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

  • EditText — Android-da matn kiritish uchun asosiy komponent, tahrirlash qo'llab-quvvatlashi bilan TextView vorisi.
  • inputType klaviatura rejimi va ruxsat etilgan belgilarni aniqlaydi: matn, raqam, elektron pochta, telefon, parol.
  • TextWatcher tekshirish va avtomatik to'ldirish uchun matn o'zgarishlarini real vaqtda kuzatish imkonini beradi.
  • OnEditorActionListener klaviatura harakatlarini qayta ishlaydi: Done, Search, Next, Send.
  • InputFilter maxsus filtrlar orqali kiritilgan belgilar va matn uzunligini cheklaydi.
  • Atributlar hint, maxLines, maxLength, textColorHint maydonning xatti-harakati va ko'rinishini sozlaydi.
  • Material Design TextInputLayout orqali stillashtirish suzuvchi yorliq va xatolar bilan zamonaviy ko'rinishni ta'minlaydi.

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.

Loyihani muhokama qilish

Shuningdek o'qing