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 फ़ोन कीबोर्ड को सक्रिय करता है, जो फ़ोन नंबरों के लिए विशिष्ट अंकों और वर्णों को प्रदर्शित करता है: +, #, *, (, ). संख्या कीबोर्ड के विपरीत, फ़ोन एक अतिरिक्त मोड में अक्षर लेआउट भी दिखाता है, क्योंकि फ़ोन नंबरों में अक्षर हो सकते हैं (जैसे, 1-800-FLOWERS)। फ़ोन क्लास में कोई अतिरिक्त फ़्लैग नहीं है लेकिन एक्सटेंशन दर्ज करने के लिए 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 सेट किया जाता है, तो दर्ज किए गए वर्ण बिंदुओं या तारांकन के रूप में प्रदर्शित होते हैं (Android संस्करण और कीबोर्ड पर निर्भर करता है)। इस मोड में कीबोर्ड ऑटोकरेक्ट और उपयोगकर्ता शब्दकोश में शब्दों को सहेजने को अक्षम करता है, पूर्वानुमानित इनपुट सुविधाओं के माध्यम से पासवर्ड लीक को रोकता है।
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" विशेषता का उपयोग करें। यह एंटर बटन को 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें