InputType — یہ کیا ہے، ان پٹ کی صفات اور Android میں ان کی ترتیب

مصنف: IT Sectr اشاعت: 2026-07-07 مطالعے کا وقت: 9 منٹ

InputType ایک Android صفت ہے جو ٹیکسٹ فیلڈز کے لیے ان پٹ ڈیٹا کی نوعیت اور کی بورڈ کے رویے کا تعین کرتی ہے۔ InputType کی قدر ایک بٹ ماسک ہے جو ان پٹ کلاس (ٹیکسٹ، نمبر، فون، تاریخ) اور موڈیفائر (ملٹی لائن، آٹو درست، بڑے حروف، پوشیدہ ان پٹ) کو یکجا کرتی ہے۔ InputType ظاہر کردہ کی بورڈ کی قسم، ان پٹ کریکٹر فلٹرنگ اور آٹو فل رویے کو متاثر کرتا ہے۔ Android Developers (2026) کے مطابق، InputType درست ڈیٹا ان پٹ کو یقینی بنانے کے لیے سب سے اہم صفات میں سے ایک ہے اور اسے ہر قابل تدوین ٹیکسٹ فیلڈ کے لیے واضح طور پر سیٹ کیا جانا چاہیے۔

اہم نکات

  • InputType — ایک بٹ ماسک جو EditText کے لیے ان پٹ کلاس اور موڈیفائر کی وضاحت کرتا ہے۔
  • ان پٹ کلاسز — TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE, TYPE_CLASS_DATETIME۔
  • موڈیفائر — جھنڈے جو رویے کی وضاحت کرتے ہیں: MULTI_LINE, AUTO_CORRECT, PASSWORD, CAP_SENTENCES۔
  • یکجا کرنا — کلاس اور موڈیفائر عین ترتیب کے لیے بٹ وائز OR کے ذریعے یکجا کیے جاتے ہیں۔
  • اثر — درست InputType ان پٹ کو تیز کرتا ہے، غلطیاں کم کرتا ہے اور فارم UX کو بہتر بناتا ہے۔

Android میں InputType کیا ہے

InputType ایک عددی مستقل (Int) ہے جو ٹیکسٹ فیلڈ کے لیے ان پٹ موڈ کو انکوڈ کرتا ہے۔ Android میں، یہ android.text.InputType کلاس میں متعرف ہے۔ InputType قدر دو حصوں پر مشتمل ہے: ان پٹ کلاس (بٹ 0–4) اور موڈیفائر (بٹ 5–31)۔ ان پٹ کلاس بنیادی ڈیٹا کی قسم کی وضاحت کرتی ہے — ٹیکسٹ، نمبر، فون، تاریخ۔ موڈیفائر منتخب کردہ کلاس کے اندر رویے کی وضاحت کرتے ہیں — مثال کے طور پر، ٹیکسٹ کلاس کے لیے، آپ آٹو درست، بڑے حروف یا ملٹی لائن ان پٹ کو فعال کر سکتے ہیں۔

InputType میکانزم تین سطحوں پر کام کرتا ہے: Android فریم ورک کی سطح پر، یہ تعین کرتا ہے کہ کون سا InputConnection بنایا جائے گا (EditText اور IME کے درمیان کنکشن)؛ IME (کی بورڈ) کی سطح پر، یہ بتاتا ہے کہ کون سے کریکٹر دکھانے ہیں اور ان پٹ کو کیسے ہینڈل کرنا ہے؛ ایپلیکیشن کی سطح پر، یہ EditText میں شامل InputFilter کے ذریعے کریکٹر فلٹر کرتا ہے۔ Android Source Code (AOSP, 2026) کے مطابق، بٹ ماسک کو TextView.getInputType() طریقہ میں پروسیس کیا جاتا ہے، جو موجودہ قدر لوٹاتا ہے، اور setInputType()، جو اندرونی فلٹرز اور IME کنکشن کو دوبارہ ترتیب دیتا ہے۔

InputType کی ایک اہم خصوصیت یہ ہے کہ اسے حفاظتی وجوہات کی بنا پر کسی دوسرے پروسیس سے نہیں پڑھا جا سکتا۔ یہ ان پٹ کی قسم تک رسائی کے ذریعے ڈیٹا کی چوری کو روکتا ہے (مثال کے طور پر، یہ تعین کرنا کہ آیا فیلڈ پاس ورڈ ہے)۔ کسی دوسری ایپلیکیشن سے InputType پڑھنے کی کوشش کرنے پر، ڈیفالٹ طور پر TYPE_CLASS_TEXT واپس کیا جاتا ہے۔

kotlin
// بنیادی InputType مستقل
InputType.TYPE_CLASS_TEXT       // 0x0001 = 1
InputType.TYPE_CLASS_NUMBER     // 0x0002 = 2
InputType.TYPE_CLASS_PHONE      // 0x0003 = 3
InputType.TYPE_CLASS_DATETIME   // 0x0004 = 4

// کلاس نکالنے کے لیے ماسک
InputType.TYPE_MASK_CLASS       // 0x0000000F

InputType کلاسز: TEXT, NUMBER, PHONE, DATETIME

Android چار بنیادی InputType کلاسز کی وضاحت کرتا ہے۔ ہر کلاس ڈیٹا کے ایک مخصوص زمرے سے مطابقت رکھتی ہے اور متعلقہ کی بورڈ کی قسم کو فعال کرتی ہے۔ کلاس بٹ ماسک کے بٹ 0–4 میں مخصوص کی جاتی ہے اور TYPE_MASK_CLASS (0x0F) ماسک کے ذریعے نکالی جا سکتی ہے۔

کلاسمستقلکی بورڈاستعمال
TEXTTYPE_CLASS_TEXT (1)QWERTY کی بورڈٹیکسٹ، تبصرے، وضاحت
NUMBERTYPE_CLASS_NUMBER (2)عددیمقدار، قیمت، عمر
PHONETYPE_CLASS_PHONE (3)فونفون نمبر
DATETIMETYPE_CLASS_DATETIME (4)تاریخ/وقتتاریخ، وقت

TYPE_CLASS_DATETIME براہ راست شاذ و نادر ہی استعمال ہوتا ہے — تاریخ کے ان پٹ کے لیے عام طور پر ٹیکسٹ فیلڈ کی بجائے DatePicker یا DatePickerDialog استعمال کیا جاتا ہے۔ تاہم، کچھ منظرناموں (فوری دستی تاریخ اندراج) میں، یہ کلاس مفید ہو سکتی ہے۔ اس کے پاس کوئی مخصوص کی بورڈ نہیں ہے اور یہ عام طور پر ایک عددی کی بورڈ دکھاتا ہے۔

ہر ان پٹ کلاس کو تغیرات (بٹ 5–7 میں مخصوص ذیلی اقسام) کے ساتھ جوڑا جا سکتا ہے۔ مثال کے طور پر، TYPE_TEXT_VARIATION_PASSWORD (بٹ 5) TEXT کلاس میں پوشیدہ ان پٹ شامل کرتا ہے۔ تغیر کے بٹس: 0x000000E0 (TYPE_MASK_VARIATION ماسک)۔

InputType موڈیفائر جھنڈے

موڈیفائر جھنڈے (بٹ 8–31) بنیادی کلاس میں اضافی صلاحیتیں شامل کرتے ہیں۔ وہ کی بورڈ کی قسم نہیں بدلتے لیکن ان پٹ رویے کو تبدیل کرتے ہیں۔ جھنڈے ہر کلاس کے لیے مخصوص ہوتے ہیں — TEXT کے جھنڈے NUMBER کے ساتھ کام نہیں کرتے، اور اس کے برعکس۔ ذیل میں ہر کلاس کے لیے اہم موڈیفائر درج ہیں۔

TEXT کے لیے جھنڈے

  • TYPE_TEXT_FLAG_CAP_CHARACTERS — تمام حروف بڑے۔
  • TYPE_TEXT_FLAG_CAP_WORDS — ہر لفظ بڑے حرف سے شروع ہوتا ہے۔
  • TYPE_TEXT_FLAG_CAP_SENTENCES — جملے کے شروع میں بڑا حرف (ڈیفالٹ)۔
  • TYPE_TEXT_FLAG_AUTO_CORRECT — خودکار ٹائپو درستی۔
  • TYPE_TEXT_FLAG_AUTO_COMPLETE — خودکار مکمل (AutoCompleteTextView کے لیے)۔
  • TYPE_TEXT_FLAG_MULTI_LINE — ملٹی لائن ان پٹ۔
  • TYPE_TEXT_FLAG_NO_SUGGESTIONS — تجاویز غیر فعال کریں۔

NUMBER کے لیے جھنڈے

  • TYPE_NUMBER_FLAG_SIGNED — منفی نمبروں کی اجازت دیتا ہے (مائنس کا نشان)۔
  • TYPE_NUMBER_FLAG_DECIMAL — اعشاریہ نقطے کی اجازت دیتا ہے۔

Android Developers Documentation (2026) کے مطابق، مختلف کلاسز کے جھنڈے اوورلیپ نہیں ہوتے — NUMBER کے ساتھ TEXT جھنڈا استعمال کرنے کی کوشش نظر انداز کر دی جائے گی۔ سیٹ کردہ جھنڈے کو چیک کرنے کے لیے بٹ وائز AND استعمال کریں: (inputType and FLAG) != 0۔

InputType کے امتزاج: مختلف منظرناموں کے لیے مثالیں

InputType کلاسز اور جھنڈوں کا درست امتزاج صارف دوست فارم بنانے کی کنجی ہے۔ آئیے عام منظرناموں اور ان کی متعلقہ InputType ترتیبات کو دیکھتے ہیں۔ ہر منظرنامہ ایک مخصوص ڈیٹا کی قسم کے لیے ان پٹ کو بہتر بناتا ہے، فارم کو بدیہی بناتا ہے اور اسے پُر کرنے میں تیزی لاتا ہے۔

منظرنامہInputTypeکی بورڈ
نامtextCapWordsQWERTY، ہر لفظ بڑے حرف سے
ای میلtextEmailAddressQWERTY @ اور . کے ساتھ
پاس ورڈtextPasswordQWERTY، پوشیدہ ان پٹ
فونphoneہندسے +، #، * کے ساتھ
قیمتnumberDecimalاعشاریہ نقطے کے ساتھ ہندسے
مقدارnumberصرف ہندسے
تبصرہtextCapSentences|textMultiLineQWERTY، ملٹی لائن
تلاشtext|textNoSuggestionsQWERTY بغیر تجاویز
kotlin
// قیمت کے فیلڈ کے لیے امتزاج
editText.inputType = InputType.TYPE_CLASS_NUMBER or
    InputType.TYPE_NUMBER_FLAG_DECIMAL

// تبصرہ فیلڈ کے لیے امتزاج
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_MULTI_LINE

InputType کے ساتھ پروگراماتی کام

setInputType() کے ذریعے پروگراماتی طور پر InputType سیٹ کرنا پچھلی قدر کو اوور رائٹ کر دیتا ہے۔ اگر آپ کو صرف ماسک کا کچھ حصہ تبدیل کرنا ہے (مثال کے طور پر، ایک جھنڈا شامل کرنا)، تو آپ کو موجودہ قدر محفوظ کرنی ہوگی، اسے تبدیل کرنا ہوگا اور دوبارہ لاگو کرنا ہوگا۔ setInputType() کی ہر کال EditText کے اندرونی فلٹرز کو دوبارہ ترتیب دیتی ہے۔

setRawInputType() طریقہ setInputType سے اس لحاظ سے مختلف ہے کہ یہ فلٹرز اور تجاویز کی دوبارہ ترتیب کو متحرک نہیں کرتا۔ یہ EditText کی حالت کو مکمل طور پر دوبارہ لوڈ کیے بغیر InputType کو عارضی طور پر تبدیل کرنے کے لیے استعمال ہوتا ہے۔ setInputType() کال کرنے کے بعد، کی بورڈ کو اپ ڈیٹ کرنے کے لیے IME کو دوبارہ شروع کرنے کی سفارش کی جاتی ہے۔

موڈ تبدیل کرنا

kotlin
// پاس ورڈ اور مرئی ٹیکسٹ کے درمیان سوئچ کریں
fun togglePasswordVisibility(editText: EditText) {
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    editText.inputType = if (isPassword) {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // کرسر کی پوزیشن رکھیں
    val cursorPos = editText.selectionStart
    editText.setSelection(cursorPos)
}

کلاس اور تغیر نکالنا

kotlin
// ان پٹ کلاس حاصل کریں
fun getInputClass(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_CLASS
}

// ان پٹ تغیر حاصل کریں
fun getInputVariation(inputType: Int): Int {
    return inputType and InputType.TYPE_MASK_VARIATION
}

// چیک کریں کہ آیا پاس ورڈ فیلڈ ہے
fun isPasswordField(editText: EditText): Boolean {
    return (editText.inputType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0
}

InputType کے انتخاب کے لیے بہترین طریقے

صحیح InputType کا انتخاب نہ صرف UX سے متعلق ہے بلکہ حفاظت اور ڈیٹا کی درستگی سے بھی ہے۔ اہم سفارشات میں شامل ہیں: ہر EditText کے لیے ہمیشہ ایک واضح InputType بتائیں؛ ممکنہ حد تک مخصوص ترین ان پٹ کلاس استعمال کریں؛ مختلف کلاسز کے جھنڈوں کو یکجا نہ کریں؛ حساس ڈیٹا فیلڈز کے لیے PASSWORD تغیرات استعمال کریں؛ تلاش کے فیلڈز کے لیے imeOptions="actionSearch" استعمال کریں۔

InputType رسائی کی خدمات (Accessibility) کے کام کو بھی متاثر کرتا ہے۔ textPassword قسم کے فیلڈز کو اسکرین ریڈرز سے اضافی تحفظ ملتا ہے — وہ درج کردہ حروف کو بلند آواز میں نہیں پڑھتے۔ textEmailAddress فیلڈز کے لیے، اسکرین ریڈر صارف کو بتاتا ہے کہ فیلڈ ای میل کے لیے ہے اور مناسب تجاویز فراہم کرتا ہے۔

  • واضحیت — ہمیشہ InputType کو واضح طور پر سیٹ کریں، ڈیفالٹ قدر (textMultiLine) پر بھروسہ نہ کریں۔
  • مخصوصیت — سب سے مخصوص قسم استعمال کریں: ای میل کے لیے text نہیں، textEmailAddress۔
  • حفاظت — پاس ورڈز، PIN اور کارڈ ڈیٹا کے لیے PASSWORD تغیرات استعمال کریں۔
  • آٹو فل — پاس ورڈ مینیجرز کی مدد کے لیے InputType کو autofillHints کے ساتھ یکجا کریں۔
  • جانچ — مختلف کی بورڈز (Gboard, SwiftKey, Samsung Keyboard) پر رویے کی جانچ کریں۔

Material Design Guidelines (2025) کے مطابق، InputType کو ڈیٹا کی اس قسم سے مطابقت رکھنی چاہیے جو صارف درج کر رہا ہے۔ غلط InputType نہ صرف ان پٹ کو سست کرتا ہے بلکہ غلطیوں کا سبب بھی بن سکتا ہے: مثال کے طور پر، اگر آپ فون نمبر فیلڈ کے لیے textMultiLine چھوڑ دیتے ہیں، تو کی بورڈ عددی کی پیڈ نہیں دکھائے گا اور صارف کو ہر بار دستی طور پر لے آؤٹ تبدیل کرنا پڑے گا۔

اکثر پوچھے گئے سوالات

InputType کی بورڈ کی قسم (Keyboard Type) سے کیسے مختلف ہے؟

InputType ایک EditText صفت ہے جو بٹ ماسک کے ذریعے ان پٹ ڈیٹا کی قسم کی وضاحت کرتی ہے۔ Keyboard Type ایک غیر سرکاری نام ہے InputType کے ذریعے فعال کردہ بصری کی بورڈ کی قسم کے لیے۔ InputType کی بورڈ لے آؤٹ کے علاوہ کریکٹر فلٹرنگ، آٹو درست اور آٹو مکمل کو بھی متاثر کرتا ہے۔

InputType کو ڈیفالٹ قدر پر کیسے ری سیٹ کریں؟

editText.inputType = InputType.TYPE_CLASS_TEXT سیٹ کریں یا مکمل ری سیٹ کے لیے مستقل InputType.TYPE_NULL (0x00000000) استعمال کریں۔ TYPE_NULL کے ساتھ، فوکس ہونے پر فیلڈ کی بورڈ نہیں دکھائے گا۔ معیاری ٹیکسٹ ان پٹ پر واپس جانے کے لیے، بغیر جھنڈوں کے TYPE_CLASS_TEXT سیٹ کریں۔

کیا میں کسٹم InputType بنا سکتا ہوں؟

آپ نئی InputType کلاس نہیں بنا سکتے کیونکہ یہ Android فریم ورک کا حصہ ہے۔ تاہم، آپ مطلوبہ رویہ حاصل کرنے کے لیے موجودہ کلاسز اور جھنڈوں کو یکجا کر سکتے ہیں۔ InputFilter کے ذریعے اضافی کریکٹر فلٹرنگ لاگو کریں، جو setFilters() طریقہ کے ذریعے EditText پر سیٹ کیا جاتا ہے۔

InputType IME (کی بورڈ) کو کیسے متاثر کرتا ہے؟

InputType InputConnection کے ذریعے ان پٹ سسٹم کو بھیجا جاتا ہے۔ IME InputType کلاس اور تغیر کو پڑھتا ہے اور متعلقہ کی بورڈ لے آؤٹ منتخب کرتا ہے۔ مثال کے طور پر، TYPE_CLASS_NUMBER کے ساتھ TYPE_NUMBER_FLAG_DECIMAL کی بورڈ کو اعشاریہ نقطے کے ساتھ ایک عددی کی پیڈ دکھانے کا سبب بنتا ہے۔ زیادہ تر جدید کی بورڈز ان سفارشات پر عمل کرتے ہیں۔

رن ٹائم پر InputType کیسے چیک کریں؟

Kotlin میں editText.inputType پراپرٹی یا Java میں editText.getInputType() استعمال کریں۔ کلاس نکالنے کے لیے ماسک لگائیں: inputType and InputType.TYPE_MASK_CLASS۔ کسی مخصوص جھنڈے کو چیک کرنے کے لیے: inputType and InputType.TYPE_TEXT_FLAG_MULTI_LINE — اگر نتیجہ != 0 ہے تو جھنڈا سیٹ ہے۔

خلاصہ

  • InputType — ایک بٹ ماسک جو ایک ان پٹ کلاس (TEXT, NUMBER, PHONE, DATETIME) اور موڈیفائر پر مشتمل ہے۔
  • ان پٹ کلاس بنیادی ڈیٹا کی قسم اور ظاہر کردہ کی بورڈ کی قسم کی وضاحت کرتی ہے۔
  • موڈیفائر رویے کی وضاحت کرتے ہیں: ملٹی لائن، آٹو درست، بڑے حروف، پوشیدہ ان پٹ۔
  • بٹ وائز OR کے ذریعے یکجا کرنا مختلف منظرناموں کے لیے عین ترتیبات بنانے کی اجازت دیتا ہے۔
  • PASSWORD تغیرات آٹو درست کو غیر فعال کرتے ہیں، حروف چھپاتے ہیں اور ڈکشنری میں ذخیرہ ہونے سے روکتے ہیں۔
  • پروگراماتی ترتیب setInputType() کے ذریعے کی بورڈ کو اپ ڈیٹ کرنے کے لیے IME کو دوبارہ شروع کرنے کی ضرورت ہوتی ہے۔
  • بہترین طریقے — InputType کو واضح طور پر سیٹ کریں، مخصوص اقسام استعمال کریں اور مختلف کی بورڈز پر جانچ کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں