Keyboard Type Android میں ورتوالی کی بورڈ کی ترتیب ہے جو ایک مخصوص انپٹ فیلڈ کے لیے ظاہر کرده حروف کا سیٹ اور لی آؤٹ کی وضاحت کرتا ہے۔ Android بہت سے پھلے سے متعین شدہ اقسام کی حمایت کرتا ہے: text (معیاری متن)، number (عدادی)، phone (ٹیلیفون)، email (@ کی علامت کے ساتھ)، textPassword (پاس ورڈ کے لیے)، datetime اور دیگر۔ ہر قسم ایک مخصوص کام کے لیے انپٹ انٹرفیس کو بہتر بناتا ہے — مثلاً، ای میل کی بورڈ مرکزی سکرین پر @ کی علامت اور نقطہ ظاہر کرتا ہے۔ Android Developers (2026) کے مطابق، صحیح Keyboard Type کا انتخاب معیاری متن کی بورڈ کے مقابلے میں کی سٹروکس کی تعداد میں 20–40% تک کی کمی کرتا ہے۔
اہم نکات
Keyboard Type XML میں android:inputType وصف کی قیمت یا کوڈ میں setInputType() کے پروگرامیٹک کال سے متعین ہوتا ہے۔ InputType ایک بٹ ماسک ہے جہاں انپٹ کلاس کو مبدل پرچموں کے ساتھ ملایا جاتا ہے۔ بنیادی کلاسیں یہ ہیں: متن کے لیے TYPE_CLASS_TEXT، عداد کے لیے TYPE_CLASS_NUMBER، ٹیلیفون کے لیے TYPE_CLASS_PHONE، تاریخ اور وقت کے لیے TYPE_CLASS_DATETIME۔
ہر Keyboard Type تین پہلوئوں کو متاثر کرتا ہے: ورتوالی کی بورڈ کا لی آؤٹ (مرکزی سکرین پر کون سے حروف نظر آتے ہیں)، درج کردہ حروف کی چھان ٹ (کون سے حروف کی اجازت ہے)، اور خودکار درستی/خودکار مکمل کا روائیہ۔ مثلاً، عدادی کی بورڈ صرف ہندسے اور اعشاری جدا کنندگی کو ظاہر کرتی ہے، اور یہ حروف نہیں دکھاتی چاہے صاحب استعمال کیس بدل دے۔ Android Developers Documentation (2026) کے مطابق، کلاسوں کو پرچموں کے ساتھ ملانا انتہائی مخصوصی موڈ بنانے کی اجازت دیتا ہے: خودکار درستی کے ساتھ کئی سطری متن، فلوٹنگ پائنٹ نمبر، خودکار پر کرنے کی حمایت کے ساتھ پاس ورڈ۔
یہ سمجھنا اہم ہے کہ Keyboard Type انپٹ سیسٹم (IME) کے لیے ایک سفارش ہے۔ کچھ تیسرے فریق کی بورڈز (Gboard، SwiftKey) متعین قسم کو جزوی طور پر نظرانداز کر سکتی ہیں اگر صاحب نے اپنی ترجیحات مقرر کی ہوں۔ تاہم، زیادہ تر معیاری Android کی بورڈز اور Google Gboard متعین انپٹ قسم کی سختی سے پیروی کرتے ہیں۔
// پروگرامیٹک کی بورڈ کی قسم کی ترتیب
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL or
InputType.TYPE_NUMBER_FLAG_SIGNED
TYPE_CLASS_TEXT متن درج کرنے کے لیے بنیادی کلاس ہے۔ یہ حروف، ہندسے اور علامات کے ساتھ معیاری QWERTY کی بورڈ کو چالو کرتا ہے۔ متن کلاس میں سب سے زیادہ مبدل ہوتے ہیں جو روائیہ کو بہتر بناتے ہیں: TYPE_TEXT_FLAG_CAP_SENTENCES (جملے کے آغاز پر خودکار بڑا حرف)، TYPE_TEXT_FLAG_AUTO_CORRECT (خودکار درستی)، TYPE_TEXT_FLAG_MULTI_LINE (کئی سطری موڈ)، TYPE_TEXT_FLAG_NO_SUGGESTIONS (تجویزات بند کرنا)۔
متن کی بورڈ کے مبدلوں کو درست ترتیبیں بنانے کے لیے ملایا جا سکتا ہے: مثلاً، text|textCapSentences|textAutoCorrect تبصرے کے انپٹ فیلڈ کے لیے موزوں ہے جہاں خودکار بڑے حروف اور تیبائی درستی کی ضرورت ہوتی ہے۔ جبکہ text|textNoSuggestions کوڈ یا خاص مصالح درج کرنے کے لیے استعمال ہوتا ہے جہاں خودکار درستی نقصان دہ ہو سکتی ہے۔
UX Stack Exchange (2025) کے مطابق، خودکار درستی کے ساتھ ایک متن کی بورڈ اوسط صاحب کے لیے ٹائپنگ کو 15–25% تیز کرتی ہے، لیکن تکنیکی مصالح (کوڈ، URL، ای میل) کے لیے خودکار درستی کو بند کرنے کی سفارش کی جاتی ہے کیونکہ یہ اکسر صحیح مصالح کو غلط سے بدل دیتی ہے۔
<!-- Text with autocorrect and capital sentences -->
android:inputType="textCapSentences|textAutoCorrect"
<!-- Text without suggestions and autocorrect -->
android:inputType="textNoSuggestions"
TYPE_CLASS_NUMBER عدادی کی بورڈ کو چالو کرتا ہے، جو صرف ہندسے، اعشاری جدا کنندگی اور منفی کا نشان ظاہر کرتا ہے۔ یہ قسم مقدار، قیمتیں، عمر، کوڈ اور دیگر عدادی ڈیٹا کے انپٹ فیلڈ کے لیے استعمال ہوتی ہے۔ عدادی کی بورڈ متن کی بورڈ کے مقابلے سکرین پر کم جگہ گھرتی ہے اور حادثی حرف درج کرنے کو ختم کرتی ہے۔
Number کے تین مبدل ہیں: TYPE_NUMBER_FLAG_DECIMAL ایک اعشاری نقطہ/کوما جوڑتا ہے، TYPE_NUMBER_FLAG_SIGNED منفی عداد کے لیے منفی کا نشان جوڑتا ہے، TYPE_NUMBER_VARIATION_PASSWORD — PIN کوڈ کے لیے جہاں ہندسے چھپے حروف کے طور پر ظاہر ہوتے ہیں۔ number|numberDecimal|numberSigned کا امتزاج کسی بھی نشان کے فلوٹنگ پائنٹ عداد درج کرنے کے لیے ایک مکمل فیلڈ بناتا ہے۔
// اعشاری نقطے کے ساتھ عدادی درج
editText.inputType = InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
// درج کردہ عدد کی جانچ
val amount = editText.text.toString().toDoubleOrNull() ?: 0.0
TYPE_CLASS_PHONE ٹیلیفون کی بورڈ کو چالو کرتا ہے، جو ٹیلیفون نمبروں کے لیے معمولی ہندسے اور حروف ظاہر کرتا ہے: +, #, *, (, )۔ عدادی کی بورڈ کے برعکس، phone ایک اضافی موڈ میں حروف کا لی آؤٹ بھی دکھاتا ہے، کیونکہ ٹیلیفون نمبروں میں حروف هو سکتے ہیں (مثلاً، 1-800-FLOWERS)۔ phone کلاس میں کوئی اضافی پرچم نہیں ہے لیکن اکسٹنشن درج کرنے کے لیے TYPE_TEXT_VARIATION_PHONE_ETC کی حمایت کرتا ہے۔
TYPE_TEXT_VARIATION_EMAIL_ADDRESS ای میل کی بورڈ کو چالو کرتا ہے، جہاں @ کی علامت اور نقطہ مرکزی سکرین پر ہوتے ہیں، اور معمولی ڈومین اکسٹینشنز (.com، .net، .org) بھی دستیاب ہیں۔ Gboard @ کے بعد ٹائپ کرتے وقت مقبول ڈومین کے ساتھ بٹن بھی دیکھاتا ہے۔ ای میل کی بورڈ خودکار طور پر خودکار درستی کو بند کرتی ہے کیونکہ ای میل پتے میں غیر معیاری حروف کا امتزاج ہو سکتا ہے۔
Google Material Design Guidelines (2025) کے مطابق، ٹیلیفون فیلڈ کے لیے مزید سفارش کی جاتی ہے کہ android:digits وصف متعین کیا جائے، جو منظور حروف کے سیٹ کو محدود کرتا ہے۔ ای میل فیلڈ کے لیے، پاس ورڈ مینجر اور Google Autofill سے خودکار پر کرنے کی حمایت کے لیے autofillHints="email" متعین کرنا بھی اہم ہے۔
<!-- Email keyboard with autofill -->
android:inputType="textEmailAddress"
android:importantForAutofill="yes"
android:autofillHints="emailAddress"
<!-- Phone keyboard with digit restriction -->
android:inputType="phone"
android:digits="0123456789+"
TYPE_TEXT_VARIATION_PASSWORD اور TYPE_NUMBER_VARIATION_PASSWORD حساس ڈیٹا کے لیے انپٹ موڈ ہیں۔ جب textPassword مقرر کیا جاتا ہے، درج کردہ حروف نقاط یا ستاروں کے طور پر ظاہر ہوتے ہیں (آنڈروئیڈ ورشن اور کی بورڈ پر منحصر)۔ اس موڈ میں کی بورڈ خودکار درستی اور صاحب کی ڈکشنری میں الفاظ کی حفاظت کو بند کرتی ہے، پیشینگوئی انپٹ خوبیوں کے ذریعے پاس ورڈ کے رساو کو روکتی ہے۔
Password کی بورڈ فیلڈ مواد کی اسکرین شاٹ لینے کی صلاحیت (FLAG_SECURE پرچم) کو بھی بند کرتی ہے، حالانکہ یہ روائیہ مخصوص کی بورڈ کے نفاذ پر منحصر ہے۔ Android 8.0 (API 26) سے شروع کرتے ہوئے، پاس ورڈ کی بورڈز importantForAutofill="yes" وصف مقرر ہونے پر پاس ورڈ مینجرز کے ذریعے خودکار پر کرنے کی حمایت کرتی ہیں۔
Android Security Recommendations (2025) کے مطابق، پاس ورڈ فیلڈ کے لیے مزید سفارش کی جاتی ہے: بہت لمبے پاس ورڈز (جو ڈیٹابیس حملے کا ویکٹر ہو سکتے ہیں) کو روکنے کے لیے maxLength مقرر کریں، inputType="textPassword" کو TextInputLayout اور endIconMode="password_toggle" کے ساتھ استعمال کریں تاکہ صاحب فارم جمع کرنے سے پہلے درج کردہ پاس ورڈ کو چیک کر سکے۔
<!-- Password field with show/hide icon -->
@+id/tilPasswordField
app:endIconMode="password_toggle">
@+id/etPasswordField
android:inputType="textPassword"
android:maxLength="64"
android:importantForAutofill="yes" />
</com.google.android.material.textfield.TextInputLayout>
Keyboard Type کی پروگرامیٹک ترتیب کو سیاق یا صاحب کے انپٹ کے مطابق متغیر طور پر کی بورڈ کے موڈ کو بدلنے کی اجازت دیتی ہے۔ مثلاً، فیلڈ کی قسم (متن/عدد/تاریخ) بدلتے وقت یا مقامی ترتیب بدلتے وقت۔ setInputType() طریقه ایک InputType بٹ ماسک قبول کرتا ہے اور اگر فیلڈ فوکس میں ہے تو فورن کی بورڈ کو اپڈیٹ کرتا ہے۔
// متن اور عدادی درج کے درمیان سوئچ کریں
fun switchInputType(field: EditText, isNumeric: Boolean) {
field.inputType = if (isNumeric) {
InputType.TYPE_CLASS_NUMBER or
InputType.TYPE_NUMBER_FLAG_DECIMAL
} else {
InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES
}
field.setSelection(field.text.length)
}
// چیک کریں کہ فیلڈ عدادی ہے یا نہیں
fun isNumericInput(field: EditText): Boolean {
val type = field.inputType
return (type and InputType.TYPE_MASK_CLASS) ==
InputType.TYPE_CLASS_NUMBER
}
// چیک کریں کہ خودکار درستی فعال ہے یا نہیں
fun isAutoCorrectEnabled(field: EditText): Boolean {
return (field.inputType and
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT) != 0
}
اکثر پوچے جانے والے سوالات
اگر inputType متعین نہیں کیا گیا، تو EditText پہلے سے طے پر TYPE_CLASS_TEXT کو TYPE_TEXT_FLAG_MULTI_LINE پرچم کے ساتھ استعمال کرتا ہے۔ اس کا مطلب ایک معیاری QWERTY کی بورڈ اور کئی سطری انپٹ ہے۔ زیادہ تر فیلڈ کے لیے، کی بورڈ کے درست روائیے اور حروف کی چھان ٹ کو یقینی بنانے کے لیے inputType کو واضح طور پر متعین کرنے کی سفارش کی جاتی ہے۔
EditText پر android:imeOptions="actionDone" وصف استعمال کریں۔ یہ Enter بٹن کو Done بٹن سے بدل دے گا۔ دیگر اختیارات: actionSearch (مگنیفائنگ گلاس)، actionNext (دائیں تیر)، actionSend (بھیجیں)۔ کوڈ میں OnEditorActionListener کے ذریعے دباؤ کو ہینڈل کریں۔
کسی مخصوص فیلڈ کے لیے وائبریشن بند نہیں کی جا سکتی — یہ ایک سیسٹم ترتیب ہے جسے کی بورڈ کی ترتیبات میں صاحب کنٹرول کرتا ہے۔ تاہم، آپ EditText پر android:focusable="false" وصف مقرر کرکے یا dispatchTouchEvent کے ذریعے نمائش کو اوررائیڈ کرکے کی بورڈ کو مکمل طور پر ظاہر ہونے سے روک سکتے ہیں۔
android:inputType="none" مقرر کریں یا پروگرامیٹک طور پر editText.setKeyListener(null) کو کال کریں۔ فیلڈ متن ظاہر کرے گا، لیکن فوکس کرنے پر کی بورڈ ظاہر نہیں ہوگی۔ صاحب متن کو منتخب اور کوپی کر سکے گا، لیکن اسے ترمیم نہیں کر سکے گا۔ متبادل کے طور پر textIsSelectable="true" کے ساتھ TextView استعمال کیا جا سکتا ہے۔
setInputType() کو کال کرنے کے بعد، آپ کو کی بورڈ کو دوبارہ ظاہر کرنے کی ضرورت ہے، کیونکہ سیسٹم IME کو خودکار طور پر اپڈیٹ نہیں کر سکتا۔ اپڈیٹ کو مجبور کرنے کے لیے InputMethodManager.restartInput(view) کو کال کریں۔ اگر فیلڈ فوکس میں نہیں ہے، پہلے requestFocus() کو کال کریں، پھر restartInput کو کال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں