EditText एक मूल Android घटक है जो यूज़र इंटरफ़ेस में टेक्स्ट इनपुट और संपादन के लिए डिज़ाइन किया गया है। यह TextView से इनहेरिट करता है और वर्चुअल या भौतिक कीबोर्ड से कैरेक्टर इनपुट की अनुमति देता है। EditText कई मोड सपोर्ट करता है: एकल और बहु-पंक्ति टेक्स्ट, पासवर्ड, नंबर, ईमेल पते और फ़ोन नंबर। Android Developers (2026) के अनुसार, EditText का उपयोग 90% से अधिक Android ऐप्स में फ़ॉर्म, सर्च फ़ील्ड, चैट और डेटा एंट्री स्क्रीन बनाने के लिए किया जाता है।
मुख्य बातें
EditText android.widget पैकेज से एक क्लास है जो यूज़र डेटा इनपुट के लिए एक इंटरैक्टिव टेक्स्ट फ़ील्ड लागू करता है। Android इनहेरिटेंस पदानुक्रम में, EditText TextView का विस्तार करता है, इसलिए यह फ़ॉन्ट, रंग और संरेखण प्रबंधन सहित टेक्स्ट लेबल के सभी गुणों को इनहेरिट करता है। EditText और TextView के बीच मुख्य अंतर सामग्री को संपादित करने की क्षमता है — उपयोगकर्ता इंटरफ़ेस में सीधे टेक्स्ट दर्ज कर सकता है, हटा सकता है और संशोधित कर सकता है।
प्रत्येक EditText एक Editable इंस्टेंस से जुड़ा होता है जो दर्ज किए गए टेक्स्ट को संग्रहीत करता है और इन्सर्ट, डिलीट और रिप्लेस ऑपरेशन का समर्थन करता है। टाइप करते समय, EditText स्वचालित रूप से कर्सर पोज़ीशन, टेक्स्ट चयन और पूर्ववत/पुनः करने के लिए परिवर्तन इतिहास का प्रबंधन करता है। Android Developers Guide (2026) के अनुसार, EditText AutoCompleteTextView क्लास के माध्यम से ऑटोकम्प्लीट का भी समर्थन करता है, जो EditText से इनहेरिट करता है।
EditText की आर्किटेक्चर मॉडल (Editable), व्यू (TextView) और कंट्रोलर (InputConnection) के पृथक्करण पर बनाई गई है। फ़ोकस प्राप्त करने पर, EditText एक InputConnection बनाता है जिसके माध्यम से इनपुट सिस्टम कैरेक्टर, की प्रेस और संपादन कमांड पास करता है। यह तंत्र किसी भी इनपुट विधि — वर्चुअल कीबोर्ड से लेकर भौतिक Bluetooth कीबोर्ड और वॉइस इनपुट तक — के साथ संगतता सुनिश्चित करता है।
val editText = EditText(context).apply {
hint = "टेक्स्ट दर्ज करें"
inputType = InputType.TYPE_CLASS_TEXT
maxLines = 1
setTextColor(Color.parseColor("#000000"))
}
EditText व्यवहार और दिखावट को ठीक से ट्यून करने के लिए दर्जनों एट्रीब्यूट प्रदान करता है। इन्हें XML लेआउट और प्रोग्रामेटिक रूप से Kotlin या Java दोनों में सेट किया जा सकता है। एट्रीब्यूट श्रेणियों में विभाजित हैं: टेक्स्ट नियंत्रण, सीमाएँ, दृश्य स्टाइलिंग और कीबोर्ड इंटरैक्शन।
| एट्रीब्यूट | विवरण | उदाहरण मान |
|---|---|---|
| android:hint | खाली फ़ील्ड में दिखाया गया संकेत टेक्स्ट | "ईमेल दर्ज करें" |
| android:inputType | इनपुट मोड (टेक्स्ट, नंबर, पासवर्ड, आदि) | textEmailAddress |
| android:maxLines | अधिकतम पंक्तियों की संख्या | 3 |
| android:maxLength | कैरेक्टर में अधिकतम टेक्स्ट लंबाई | 100 |
| android:textColorHint | संकेत टेक्स्ट का रंग | #999999 |
android:hint एट्रीब्यूट सबसे महत्वपूर्ण में से एक है — यह उपयोगकर्ता को बताता है कि फ़ील्ड में कौन सा डेटा अपेक्षित है। जब टेक्स्ट दर्ज किया जाता है, तो संकेत स्वचालित रूप से छिप जाता है। संकेत फ़ॉर्म सबमिशन में भाग नहीं लेता और फ़ील्ड मान के रूप में सहेजा नहीं जाता। Material Design अधिक आधुनिक दिखने के लिए सादे संकेत के बजाय फ़्लोटिंग लेबल के साथ TextInputLayout का उपयोग करने की अनुशंसा करता है।
<!-- 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 एट्रीब्यूट निर्धारित करता है कि उपयोगकर्ता को किस प्रकार का कीबोर्ड दिखाया जाएगा और इनपुट के लिए कौन से कैरेक्टर अनुमत हैं। यह एक बिटमास्क है जहाँ इनपुट क्लास (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) को मॉडिफ़ायर के साथ जोड़ा जाता है।
प्रत्येक इनपुट मोड न केवल कीबोर्ड लेआउट बदलता है बल्कि टेक्स्ट प्रोसेसिंग को भी प्रभावित करता है: संख्यात्मक मोड में केवल अंक और दशमलव विभाजक अनुमत हैं, ईमेल मोड में @ प्रतीक और डोमेन एक्सटेंशन उपलब्ध हैं, और फ़ोन मोड में अंक और +, #, * प्रतीक दिखाए जाते हैं। सही inputType चुनना उपयोगकर्ता अनुभव को गंभीर रूप से प्रभावित करता है — अनुपयुक्त कीबोर्ड उपयोगकर्ताओं को मोड बदलने के लिए मजबूर करता है, जिससे फ़ॉर्म भरने का समय 30-50% बढ़ जाता है।
Material Design Guidelines (2025) के अनुसार, प्रत्येक फ़ील्ड के लिए सबसे विशिष्ट inputType का उपयोग करने की अनुशंसा की जाती है: पासवर्ड के लिए textPassword, कीमतों के लिए numberDecimal, फ़ोन नंबर के लिए phone, मल्टी-लाइन इनपुट के लिए textMultiLine। इससे फ़ॉर्म भरने में तेज़ी आती है और इनपुट त्रुटियाँ कम होती हैं।
// प्रोग्रामेटिक inputType सेटअप
editText.inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT
TextWatcher रीयल टाइम में EditText में टेक्स्ट परिवर्तनों को ट्रैक करने के लिए एक इंटरफ़ेस है। इसमें तीन विधियाँ हैं: beforeTextChanged परिवर्तन से पहले कॉल किया जाता है, onTextChanged परिवर्तन के दौरान कॉल किया जाता है, afterTextChanged टेक्स्ट परिवर्तन पूरा होने के बाद कॉल किया जाता है। TextWatcher का उपयोग इनपुट सत्यापन, कैरेक्टर गणना, खोज और ऑटोकम्प्लीट के लिए किया जाता है।
OnEditorActionListener कीबोर्ड पर उपयोगकर्ता क्रियाओं को संभालता है: Done (IME_ACTION_DONE), Search (IME_ACTION_SEARCH), Send (IME_ACTION_SEND), Next (IME_ACTION_NEXT) और अन्य दबाना। यह लिसनर फ़ॉर्म नेविगेशन को व्यवस्थित करने के लिए विशेष रूप से उपयोगी है — Next दबाने पर फ़ोकस स्वचालित रूप से अगले फ़ील्ड में चला जाता है, और Done दबाने पर कीबोर्ड छिप जाता है और सबमिशन निष्पादित होता है।
Android Developers Blog (2025) के अनुसार, android:imeOptions एट्रीब्यूट के साथ OnEditorActionListener का उचित उपयोग अतिरिक्त सबमिट बटन के बिना सहज फ़ॉर्म बनाने की अनुमति देता है — उपयोगकर्ता फ़ील्ड भरता है और कीबोर्ड पर Done दबाता है, जो सेव या खोज को ट्रिगर करता है।
// ईमेल सत्यापन के लिए 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"
}
})
// फ़ॉर्म सबमिशन के लिए OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
submitForm()
true
} else false
}
आइए ईमेल और पासवर्ड इनपुट के लिए EditText का उपयोग करके लॉगिन स्क्रीन बनाने का एक पूर्ण उदाहरण देखें। यह उदाहरण inputType कॉन्फ़िगरेशन, TextWatcher के माध्यम से सत्यापन और लॉगिन बटन दबाने को संभालना दर्शाता है।
@+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 एट्रीब्यूट, थीम और स्टाइल के माध्यम से अनुकूलन का समर्थन करता है। टेक्स्ट का रंग, संकेत का रंग, अंडरलाइन का रंग (backgroundTint), फ़ॉन्ट शैली, टेक्स्ट का आकार और बहुत कुछ बदला जा सकता है। Material Components boxStrokeColor, boxBackgroundColor और endIconMode सहित कस्टम एट्रीब्यूट के साथ MaterialComponents.EditText थीम प्रदान करता है।
EditText की अंडरलाइन का रंग बदलने के लिए, android:backgroundTint एट्रीब्यूट का उपयोग करें, जो डिफ़ॉल्ट और फ़ोकस्ड स्थितियों के लिए रंग सेट करता है। Material Design में, अंडरलाइन का रंग थीम के colorPrimary के माध्यम से प्रबंधित किया जाता है। पूर्ण अनुकूलन के लिए, आप res/drawable फ़ोल्डर में बैकग्राउंड के लिए एक कस्टम drawable बना सकते हैं।
| शैली | एट्रीब्यूट | परिणाम |
|---|---|---|
| टेक्स्ट रंग | android:textColor | दर्ज किए गए टेक्स्ट का रंग बदलता है |
| संकेत रंग | android:textColorHint | संकेत टेक्स्ट का रंग बदलता है |
| अंडरलाइन | android:backgroundTint | फ़ील्ड के नीचे रेखा का रंग बदलता है |
| फ़ॉन्ट आकार | android:textSize | sp में टेक्स्ट का आकार सेट करता है |
| फ़ॉन्ट | android:fontFamily | कस्टम फ़ॉन्ट लागू करता है |
अपने ऐप में सभी EditText फ़ील्ड के लिए एक समान शैली बनाने के लिए, थीम में एक वैश्विक शैली परिभाषित करने की अनुशंसा की जाती है। Material Design Widget.MaterialComponents.TextInputLayout.OutlinedBox शैली प्रदान करता है, जो TextInputLayout का उपयोग करने वाले सभी इनपुट फ़ील्ड पर स्वचालित रूप से लागू होती है। यह प्रत्येक लेआउट में एट्रीब्यूट की नकल किए बिना एक समान दिखावट सुनिश्चित करता है।
अक्सर पूछे जाने वाले प्रश्न
EditText TextView से इनहेरिट करता है और टेक्स्ट संपादन क्षमताएँ जोड़ता है। TextView केवल टेक्स्ट प्रदर्शित करता है, जबकि EditText उपयोगकर्ता को सामग्री दर्ज करने, हटाने और संशोधित करने की अनुमति देता है। EditText inputType, TextWatcher, कर्सर प्रबंधन और डेटा इनपुट से संबंधित अन्य सुविधाओं का भी समर्थन करता है।
InputFilter का उपयोग करें — इनपुट कैरेक्टर को फ़िल्टर करने के लिए एक इंटरफ़ेस। EditText setFilters() विधि के माध्यम से फ़िल्टर की एक सरणी सेट करने का समर्थन करता है। उदाहरण के लिए, InputFilter.LengthFilter टेक्स्ट की लंबाई सीमित करता है, जबकि एक कस्टम InputFilter विशिष्ट कैरेक्टर, रेगुलर एक्सप्रेशन या Unicode रेंज को प्रतिबंधित कर सकता है।
Kotlin में editText.text.toString() या Java में editText.getText().toString() कॉल करें। text प्रॉपर्टी Editable लौटाती है, जिसे toString() के माध्यम से String में बदला जाता है। टेक्स्ट का उपयोग करने से पहले हमेशा null और खाली मानों की जाँच करें, विशेष रूप से अनिवार्य फ़ील्ड वाले फ़ॉर्म में।
android:inputType="textMultiLine" एट्रीब्यूट सेट करें या प्रोग्रामेटिक रूप से InputType.TYPE_TEXT_FLAG_MULTI_LINE फ़्लैग जोड़ें। मल्टी-लाइन मोड में, EditText Enter द्वारा लाइन ब्रेक की अनुमति देता है और ऊँचाई में स्वचालित रूप से विस्तारित होता है। ऊँचाई सीमित करने के लिए android:maxLines या android:minLines का उपयोग करें।
android:enabled="false" एट्रीब्यूट सेट करें या कोड में editText.isEnabled = false कॉल करें। निष्क्रिय EditText स्पर्श पर प्रतिक्रिया नहीं करता, फ़ोकस प्राप्त नहीं कर सकता और ग्रे रंग में दिखता है (निष्क्रिय स्थिति)। एक विकल्प android:focusable="false" का उपयोग करना है, जो इनपुट को निष्क्रिय करता है लेकिन सामान्य दिखावट बनाए रखता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें