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 का उपयोग किया जाता है। हालांकि, कुछ परिदृश्यों (त्वरित मैन्युअल दिनांक प्रविष्टि) में, यह क्लास उपयोगी हो सकती है। इसके पास कोई विशेष कीबोर्ड नहीं है और यह आमतौर पर संख्यात्मक कीबोर्ड प्रदर्शित करता है।

प्रत्येक इनपुट क्लास को विविधताओं (variations) के साथ जोड़ा जा सकता है — बिट 5–7 में निर्दिष्ट उपप्रकार। उदाहरण के लिए, TYPE_TEXT_VARIATION_PASSWORD (बिट 5) TEXT क्लास में छिपा इनपुट जोड़ता है। विविधता बिट: 0x000000E0 (TYPE_MASK_VARIATION मास्क)।

InputType मॉडिफ़ायर फ़्लैग

मॉडिफ़ायर फ़्लैग 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें