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 সেট করুন (যা ডেটাবেস আক্রমণ ভেক্টর হতে পারে), TextInputLayout এবং endIconMode="password_toggle"-এর সাথে inputType="textPassword" ব্যবহার করুন যাতে ব্যবহারকারী ফর্ম জমা দেওয়ার আগে প্রবেশ করানো পাসওয়ার্ড পরীক্ষা করতে পারে।
<!-- 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন