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 بناتا ہے جس کے ذریعے ان پٹ سسٹم کریکٹرز، کی پریس اور ترمیم کے کمانڈ منتقل کرتا ہے۔ یہ طریقہ کار ورچوئل کی بورڈز سے لے کر فزیکل بلوٹوتھ کی بورڈز اور وائس ان پٹ تک کسی بھی ان پٹ طریقہ کے ساتھ مطابقت کو یقینی بناتا ہے۔
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 مخصوص حروف، ریگولر ایکسپریشنز یا یونیکوڈ رینجز کو محدود کر سکتا ہے۔
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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں