EditText: এটি কী, অ্যাট্রিবিউট এবং Android-এ ইনপুট ফিল্ড নিয়ে কাজ করা

লেখক: IT Sectr প্রকাশিত: 2026-07-07 পড়ার সময়: 9 মিনিট

EditText হলো একটি মৌলিক Android উপাদান যা ইউজার ইন্টারফেসে টেক্সট ইনপুট এবং সম্পাদনার জন্য ডিজাইন করা হয়েছে। এটি TextView থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং ভার্চুয়াল বা ফিজিক্যাল কীবোর্ড থেকে ক্যারেক্টার ইনপুটের অনুমতি দেয়। EditText অনেক মোড সমর্থন করে: একক এবং বহু-লাইন টেক্সট, পাসওয়ার্ড, সংখ্যা, ইমেল ঠিকানা এবং ফোন নম্বর। Android Developers (2026) অনুযায়ী, Android অ্যাপের 90% এরও বেশি ক্ষেত্রে ফর্ম, সার্চ ফিল্ড, চ্যাট এবং ডেটা এন্ট্রি স্ক্রিন তৈরির জন্য EditText ব্যবহৃত হয়।

মূল বিষয়

  • EditText — Android-এ টেক্সট ইনপুটের মৌলিক উপাদান, TextView-এর একটি সাবক্লাস।
  • ইনপুট মোড — টেক্সট, সংখ্যা, পাসওয়ার্ড, ইমেল, ফোন এবং মাল্টি-লাইন ইনপুট সমর্থন করে।
  • XML অ্যাট্রিবিউট — inputType, maxLines, hint, textColorHint এবং অন্যান্য প্যারামিটারের মাধ্যমে কনফিগারেশন।
  • লিসেনার — TextWatcher পরিবর্তন ট্র্যাক করার জন্য এবং OnEditorActionListener ক্রিয়া হ্যান্ডল করার জন্য।
  • Material Design — TextInputLayout ফ্লোটিং লেবেল এবং ত্রুটি বার্তা সহ EditText-কে প্রসারিত করে।

Android-এ EditText কী

EditText হলো android.widget প্যাকেজের একটি ক্লাস যা ইউজার ডেটা ইনপুটের জন্য একটি ইন্টারেক্টিভ টেক্সট ফিল্ড বাস্তবায়ন করে। Android উত্তরাধিকার স্তরক্রমে, EditText TextView-কে প্রসারিত করে, তাই এটি ফন্ট, রং এবং সারিবদ্ধকরণ ব্যবস্থাপনা সহ টেক্সট লেবেলের সমস্ত বৈশিষ্ট্য উত্তরাধিকার সূত্রে পায়। EditText এবং TextView-এর মধ্যে প্রধান পার্থক্য হলো বিষয়বস্তু সম্পাদনার ক্ষমতা — ব্যবহারকারী সরাসরি ইন্টারফেসে টেক্সট ইনপুট, মুছে ফেলা এবং পরিবর্তন করতে পারেন।

প্রতিটি EditText একটি Editable ইন্সট্যান্সের সাথে যুক্ত থাকে যা ইনপুটকৃত টেক্সট সংরক্ষণ করে এবং সন্নিবেশ, মুছে ফেলা এবং প্রতিস্থাপন অপারেশন সমর্থন করে। টাইপ করার সময়, EditText স্বয়ংক্রিয়ভাবে কার্সার অবস্থান, টেক্সট নির্বাচন এবং পূর্বাবস্থা/পুনরায় করার জন্য পরিবর্তন ইতিহাস পরিচালনা করে। Android Developers Guide (2026) অনুযায়ী, EditText AutoCompleteTextView ক্লাসের মাধ্যমে অটোকমপ্লিটও সমর্থন করে, যা EditText থেকে উত্তরাধিকার সূত্রে প্রাপ্ত।

EditText-এর আর্কিটেকচার মডেল (Editable), ভিউ (TextView) এবং কন্ট্রোলার (InputConnection)-এর পৃথকীকরণের উপর নির্মিত। ফোকাস পাওয়ার পর, EditText একটি InputConnection তৈরি করে যার মাধ্যমে ইনপুট সিস্টেম ক্যারেক্টার, কী প্রেস এবং সম্পাদনা কমান্ড প্রেরণ করে। এই প্রক্রিয়া যেকোনো ইনপুট পদ্ধতি — ভার্চুয়াল কীবোর্ড থেকে ফিজিক্যাল ব্লুটুথ কীবোর্ড এবং ভয়েস ইনপুট পর্যন্ত — সাথে সামঞ্জস্য নিশ্চিত করে।

kotlin
val editText = EditText(context).apply {
    hint = "টেক্সট লিখুন"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

EditText-এর প্রধান অ্যাট্রিবিউট

EditText আচরণ এবং চেহারা সূক্ষ্মভাবে টিউন করার জন্য ডজন ডজন অ্যাট্রিবিউট প্রদান করে। এগুলো XML লেআউট এবং প্রোগ্রামেটিকভাবে Kotlin বা Java উভয় ক্ষেত্রেই সেট করা যেতে পারে। অ্যাট্রিবিউটগুলি বিভাগে বিভক্ত: টেক্সট নিয়ন্ত্রণ, সীমাবদ্ধতা, ভিজ্যুয়াল স্টাইলিং এবং কীবোর্ড ইন্টারঅ্যাকশন।

অ্যাট্রিবিউটবিবরণউদাহরণ মান
android:hintখালি ফিল্ডে দেখানো ইঙ্গিত টেক্সট"ইমেল লিখুন"
android:inputTypeইনপুট মোড (টেক্সট, সংখ্যা, পাসওয়ার্ড, ইত্যাদি)textEmailAddress
android:maxLinesসর্বাধিক লাইনের সংখ্যা3
android:maxLengthক্যারেক্টারে সর্বাধিক টেক্সট দৈর্ঘ্য100
android:textColorHintইঙ্গিত টেক্সটের রং#999999

android:hint অ্যাট্রিবিউটটি সবচেয়ে গুরুত্বপূর্ণ — এটি ব্যবহারকারীকে জানায় ফিল্ডে কী ডেটা প্রত্যাশিত। যখন টেক্সট ইনপুট করা হয়, ইঙ্গিতটি স্বয়ংক্রিয়ভাবে লুকিয়ে যায়। ইঙ্গিত ফর্ম জমা দেওয়ার অংশ নয় এবং ফিল্ড মান হিসেবে সংরক্ষিত হয় না। Material Design আরও আধুনিক চেহারার জন্য সাধারণ ইঙ্গিতের পরিবর্তে ফ্লোটিং লেবেল সহ TextInputLayout ব্যবহার করার পরামর্শ দেয়।

  • android:selectAllOnFocus — ফোকাস পাওয়ার পর সমগ্র টেক্সট নির্বাচন করে (সার্চ ফিল্ডের জন্য উপযোগী)।
  • android:maxLength — ইনপুট ক্যারেক্টারের সংখ্যা সীমিত করে, অতিরিক্ত কেটে ফেলে।
  • android:lines — লাইনে ফিল্ডের একটি নির্দিষ্ট উচ্চতা সেট করে (minLines-এর বিপরীতে)।
  • android:gravity — ফিল্ডের ভিতরে টেক্সট সারিবদ্ধকরণ: left, center, top, ইত্যাদি।
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

ইনপুট মোড এবং inputType

inputType অ্যাট্রিবিউট নির্ধারণ করে ব্যবহারকারীকে কী ধরনের কীবোর্ড দেখানো হবে এবং ইনপুটের জন্য কোন ক্যারেক্টার অনুমোদিত। এটি একটি বিটমাস্ক যেখানে ইনপুট ক্লাস (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) মডিফায়ারের সাথে মিলিত হয়।

প্রতিটি ইনপুট মোড শুধু কীবোর্ড লেআউট পরিবর্তন করে না বরং টেক্সট প্রক্রিয়াকরণকেও প্রভাবিত করে: সংখ্যা মোডে শুধু অঙ্ক এবং দশমিক বিভাজক অনুমোদিত, ইমেল মোডে @ প্রতীক এবং ডোমেন এক্সটেনশন উপলব্ধ এবং ফোন মোডে অঙ্ক এবং +, #, * প্রতীক প্রদর্শিত হয়। সঠিক inputType নির্বাচন ব্যবহারকারীর অভিজ্ঞতাকে গুরুতরভাবে প্রভাবিত করে — অনুপযুক্ত কীবোর্ড ব্যবহারকারীদের মোড পরিবর্তন করতে বাধ্য করে, যা ফর্ম পূরণের সময় 30-50% বাড়িয়ে দেয়।

Material Design Guidelines (2025) অনুযায়ী, প্রতিটি ফিল্ডের জন্য সবচেয়ে নির্দিষ্ট inputType ব্যবহার করার পরামর্শ দেওয়া হয়: পাসওয়ার্ডের জন্য textPassword, দামের জন্য numberDecimal, ফোন নম্বরের জন্য phone, মাল্টি-লাইন ইনপুটের জন্য textMultiLine। এটি ফর্ম পূরণের গতি বাড়ায় এবং ইনপুট ত্রুটি কমায়।

kotlin
// প্রোগ্রামেটিক inputType সেটআপ
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

EditText লিসেনার: TextWatcher এবং OnEditorActionListener

TextWatcher রিয়েল টাইমে EditText-এ টেক্সট পরিবর্তন ট্র্যাক করার জন্য একটি ইন্টারফেস। এতে তিনটি মেথড রয়েছে: beforeTextChanged পরিবর্তনের আগে কল করা হয়, onTextChanged পরিবর্তনের সময় কল করা হয়, afterTextChanged টেক্সট পরিবর্তন সম্পূর্ণ হওয়ার পর কল করা হয়। TextWatcher ইনপুট যাচাইকরণ, ক্যারেক্টার গণনা, অনুসন্ধান এবং অটোকমপ্লিটের জন্য ব্যবহৃত হয়।

OnEditorActionListener কীবোর্ডে ব্যবহারকারীর ক্রিয়াগুলি হ্যান্ডল করে: Done (IME_ACTION_DONE), Search (IME_ACTION_SEARCH), Send (IME_ACTION_SEND), Next (IME_ACTION_NEXT) এবং অন্যান্য চাপা। এই লিসেনারটি ফর্ম নেভিগেশন সংগঠিত করার জন্য বিশেষভাবে উপযোগী — Next চাপলে ফোকাস স্বয়ংক্রিয়ভাবে পরবর্তী ফিল্ডে চলে যায় এবং Done চাপলে কীবোর্ড লুকিয়ে যায় এবং জমা দেওয়া সম্পাদিত হয়।

Android Developers Blog (2025) অনুযায়ী, android:imeOptions অ্যাট্রিবিউটের সাথে OnEditorActionListener-এর সঠিক ব্যবহার অতিরিক্ত জমা বোতাম ছাড়াই স্বজ্ঞাত ফর্ম তৈরি করতে দেয় — ব্যবহারকারী ফিল্ড পূরণ করে এবং কীবোর্ডে Done চাপে, যা সংরক্ষণ বা অনুসন্ধান ট্রিগার করে।

kotlin
// ইমেল যাচাইকরণের জন্য TextWatcher
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// ফর্ম জমা দেওয়ার জন্য OnEditorActionListener
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

EditText-এর সাথে কোড উদাহরণ

ইমেল এবং পাসওয়ার্ড ইনপুটের জন্য EditText ব্যবহার করে একটি লগইন স্ক্রিন তৈরির সম্পূর্ণ উদাহরণ দেখি। এই উদাহরণটি inputType কনফিগারেশন, TextWatcher-এর মাধ্যমে যাচাইকরণ এবং লগইন বাটন চাপা হ্যান্ডল করা প্রদর্শন করে।

লগইন স্ক্রিনের XML লেআউট

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

EditText-এর প্রোগ্রামেটিক সেটআপ

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

EditText-এর স্টাইলিং

EditText XML অ্যাট্রিবিউট, থিম এবং স্টাইলের মাধ্যমে কাস্টমাইজেশন সমর্থন করে। টেক্সটের রং, ইঙ্গিতের রং, আন্ডারলাইনের রং (backgroundTint), ফন্ট স্টাইল, টেক্সটের আকার এবং আরও অনেক কিছু পরিবর্তন করা যায়। Material Components boxStrokeColor, boxBackgroundColor এবং endIconMode সহ কাস্টম অ্যাট্রিবিউট সহ MaterialComponents.EditText থিম প্রদান করে।

EditText-এর আন্ডারলাইনের রং পরিবর্তন করতে, android:backgroundTint অ্যাট্রিবিউট ব্যবহার করুন, যা ডিফল্ট এবং ফোকাসড অবস্থার জন্য রং সেট করে। Material Design-এ, আন্ডারলাইনের রং থিমের colorPrimary-এর মাধ্যমে পরিচালিত হয়। সম্পূর্ণ কাস্টমাইজেশনের জন্য, আপনি res/drawable ফোল্ডারে ব্যাকগ্রাউন্ডের জন্য একটি কাস্টম drawable তৈরি করতে পারেন।

স্টাইলঅ্যাট্রিবিউটফলাফল
টেক্সটের রংandroid:textColorইনপুটকৃত টেক্সটের রং পরিবর্তন করে
ইঙ্গিতের রংandroid:textColorHintইঙ্গিত টেক্সটের রং পরিবর্তন করে
আন্ডারলাইনandroid:backgroundTintফিল্ডের নিচে রেখার রং পরিবর্তন করে
ফন্টের আকারandroid:textSizesp-এ টেক্সটের আকার সেট করে
ফন্টandroid:fontFamilyকাস্টম ফন্ট প্রয়োগ করে

আপনার অ্যাপে সমস্ত EditText ফিল্ডের জন্য একটি সামঞ্জস্যপূর্ণ স্টাইল তৈরি করতে, থিমে একটি গ্লোবাল স্টাইল সংজ্ঞায়িত করার পরামর্শ দেওয়া হয়। Material Design Widget.MaterialComponents.TextInputLayout.OutlinedBox স্টাইল প্রদান করে, যা TextInputLayout ব্যবহার করা সমস্ত ইনপুট ফিল্ডে স্বয়ংক্রিয়ভাবে প্রয়োগ হয়। এটি প্রতিটি লেআউটে অ্যাট্রিবিউটের পুনরাবৃত্তি ছাড়াই একটি সামঞ্জস্যপূর্ণ চেহারা নিশ্চিত করে।

সচরাচর জিজ্ঞাসিত প্রশ্ন

EditText এবং TextView-এর মধ্যে পার্থক্য কী?

EditText TextView থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং টেক্সট সম্পাদনা ক্ষমতা যোগ করে। TextView শুধু টেক্সট প্রদর্শন করে, যেখানে EditText ব্যবহারকারীকে বিষয়বস্তু ইনপুট, মুছে ফেলা এবং পরিবর্তন করার অনুমতি দেয়। EditText inputType, TextWatcher, কার্সার ব্যবস্থাপনা এবং ডেটা ইনপুট সম্পর্কিত অন্যান্য বৈশিষ্ট্যও সমর্থন করে।

EditText-এ নির্দিষ্ট ক্যারেক্টার কীভাবে নিষিদ্ধ করবেন?

InputFilter ব্যবহার করুন — ইনপুট ক্যারেক্টার ফিল্টার করার জন্য একটি ইন্টারফেস। EditText setFilters() মেথডের মাধ্যমে ফিল্টারের একটি অ্যারে সেট করা সমর্থন করে। উদাহরণস্বরূপ, InputFilter.LengthFilter টেক্সটের দৈর্ঘ্য সীমিত করে, যখন একটি কাস্টম InputFilter নির্দিষ্ট ক্যারেক্টার, রেগুলার এক্সপ্রেশন বা ইউনিকোড রেঞ্জ নিষিদ্ধ করতে পারে।

কোডে EditText থেকে টেক্সট কীভাবে পাবেন?

Kotlin-এ editText.text.toString() বা Java-এ editText.getText().toString() কল করুন। text প্রপার্টি Editable রিটার্ন করে, যা toString()-এর মাধ্যমে String-এ রূপান্তরিত হয়। টেক্সট ব্যবহারের আগে সর্বদা null এবং খালি মান পরীক্ষা করুন, বিশেষত বাধ্যতামূলক ফিল্ডযুক্ত ফর্মে।

EditText কীভাবে মাল্টি-লাইন করবেন?

android:inputType="textMultiLine" অ্যাট্রিবিউট সেট করুন বা প্রোগ্রামেটিকভাবে InputType.TYPE_TEXT_FLAG_MULTI_LINE ফ্ল্যাগ যোগ করুন। মাল্টি-লাইন মোডে, EditText Enter-এর মাধ্যমে লাইন ব্রেকের অনুমতি দেয় এবং উচ্চতায় স্বয়ংক্রিয়ভাবে প্রসারিত হয়। উচ্চতা সীমিত করতে android:maxLines বা android:minLines ব্যবহার করুন।

সম্পাদনার জন্য EditText কীভাবে নিষ্ক্রিয় করবেন?

android:enabled="false" অ্যাট্রিবিউট সেট করুন বা কোডে editText.isEnabled = false কল করুন। নিষ্ক্রিয় EditText স্পর্শে সাড়া দেয় না, ফোকাস পেতে পারে না এবং ধূসর রঙে প্রদর্শিত হয় (নিষ্ক্রিয় অবস্থা)। একটি বিকল্প হলো android:focusable="false" ব্যবহার করা, যা ইনপুট নিষ্ক্রিয় করে কিন্তু স্বাভাবিক চেহারা বজায় রাখে।

সারসংক্ষেপ

  • EditText — Android-এর মৌলিক টেক্সট ইনপুট উপাদান, সম্পাদনা সমর্থন সহ TextView-এর একটি সাবক্লাস।
  • inputType কীবোর্ড মোড এবং অনুমোদিত ক্যারেক্টার নির্ধারণ করে: টেক্সট, সংখ্যা, ইমেল, ফোন, পাসওয়ার্ড।
  • TextWatcher যাচাইকরণ এবং অটোকমপ্লিটের জন্য রিয়েল টাইমে টেক্সট পরিবর্তন ট্র্যাক করার অনুমতি দেয়।
  • OnEditorActionListener কীবোর্ড ক্রিয়া হ্যান্ডল করে: Done, Search, Next, Send।
  • InputFilter কাস্টম ফিল্টারের মাধ্যমে ইনপুট ক্যারেক্টার এবং টেক্সট দৈর্ঘ্য সীমিত করে।
  • অ্যাট্রিবিউট যেমন hint, maxLines, maxLength, textColorHint আচরণ এবং চেহারা কনফিগার করে।
  • Material Design TextInputLayout-এর মাধ্যমে ফ্লোটিং লেবেল এবং ত্রুটি সহ আধুনিক চেহারা প্রদান করে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন