কম্পিউটার টিউটোরিয়াল

কোটলিন ব্যবহার করে EditText-এ বাইরে ক্লিক করলে সফট কিবোর্ড হাইড করার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে কোটলিন ব্যবহার করে EditText-এ বাইরে যেকোনো জায়গায় ক্লিক করলে (ফোকাস হারালে) সফট কিবোর্ড আটোমেটিক্যালি হাইড করা যায়। InputMethodManager ব্যবহার করে এটি বাস্তবায়ন করা হয়।

প্রথম ধাপ: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

দ্বিতীয় ধাপ: লেআউট XML ডিজাইন করুন

res/layout/activity_main.xml ফাইলে নিচের কোড যোগ করুন। মূল লেআউটে LinearLayout ব্যবহার করা হয়েছে যাতে পুরো স্ক্রিন টাচ করা যায়:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:focusableInTouchMode="true"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:hint="এখানে টেক্সট লিখুন"
        android:textColor="@android:color/background_dark"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:onClick="setText"
        android:text="টেক্সট সেট করুন"
        android:textStyle="bold" />

</LinearLayout>

তৃতীয় ধাপ: MainActivity.kt তে কিবোর্ড হাইড করার লজিক লিখুন

src/MainActivity.kt ফাইলে নিচের কোড যোগ করুন। মূল কোডটি ইতিমধ্যে ভালো ছিল, শুধু কমেন্ট এবং স্ট্রাকচার উন্নত করা হয়েছে:

import android.content.Context
import android.os.Bundle
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var editText: EditText
    private lateinit var textView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        editText = findViewById(R.id.editText)
        textView = findViewById(R.id.textView)

        // রুট লেআউটে টাচ লিসেনার যোগ করে কিবোর্ড হাইড করুন (বিকল্প পদ্ধতি)
        findViewById<View>(android.R.id.content).setOnTouchListener { _, _ ->
            hideKeyboard()
            false // ইভেন্ট প্রপাগেট করতে দিন
        }
    }

    fun setText(view: View) {
        val newText = editText.text.toString()
        textView.text = newText
        hideKeyboard() // বাটন ক্লিক করেও কিবোর্ড হাইড
    }

    private fun hideKeyboard() {
        val view = currentFocus
        if (view != null) {
            val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(view.windowToken, 0)
            view.clearFocus() // ফোকাস ক্লিয়ার করুন
        }
    }
}

চতুর্থ ধাপ: ম্যানিফেস্ট ফাইল

androidManifest.xml ফাইলটি সাধারণ থাকবে।

বিকল্প পদ্ধতি: DispatchTouchEvent ওভাররাইড করে

অ্যাক্টিভিটির dispatchTouchEvent() ওভাররাইড করে সব জায়গায় টাচে কিবোর্ড হাইড করা যায়:

override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
    if (ev.action == MotionEvent.ACTION_DOWN) {
        val view = currentFocus
        if (view is EditText) {
            val outRect = Rect()
            view.getGlobalVisibleRect(outRect)
            if (!outRect.contains(ev.rawX.toInt(), ev.rawY.toInt())) {
                view.clearFocus()
                val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                imm.hideSoftInputFromWindow(view.windowToken, 0)
            }
        }
    }
    return super.dispatchTouchEvent(ev)
}

অ্যাপ্লিকেশন চালানোর নির্দেশনা

অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করে Run করুন। EditText-এ টাইপ করুন, তারপর EditText-এ বাইরে যেকোনো জায়গায় বা বাটনে ক্লিক করলে কিবোর্ড আটোমেটিক্যালি হাইড হয়ে যাবে।

  1. অ্যান্ড্রয়েডে সফট কীবোর্ড প্রোগ্রাম্যাটিক্যালি লুকানো

  2. অ্যান্ড্রয়েডে EditText ফোকাস পেলে সফ্ট কিবোর্ড দেখানোর পদ্ধতি

  3. অ্যান্ড্রয়েডে EditText-এর বাইরে ক্লিক করলে সফ্ট কিবোর্ড লুকানোর পদ্ধতি

  4. Android-এ সফট কীবোর্ড তৈরি করার পদ্ধতি