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

টেক্সট লিখার সময় EditText-এ ইমেজ ভিউ (ImageView) কীভাবে দেখাবেন?

অ্যান্ড্রয়েড EditText-এ টেক্সট লিখার সময় ডাইনামিকভাবে ইমেজ দেখানোর পদ্ধতি

এই উদাহরণটি দেখাবে কিভাবে ব্যবহারকারী EditText-এ টাইপ করার সময় (বিশেষ করে ৩ অক্ষরের পর) বাম পাশে একটি ইমেজ/আইকন প্রদর্শন করানো যায়। এটি TextWatcher ইন্টারফেস ব্যবহার করে করা হয়।

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

Android Studio-তে File → New Project দিয়ে প্রজেক্ট তৈরি করুন।

ধাপ ২: লেয়াউট ফাইল (res/layout/activity_main.xml)

EditText-এ android:drawableStart দিয়ে ডিফল্ট আইকন এবং কাস্টম ব্যাকগ্রাউন্ড সেট করা হয়েছে।

<?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:gravity="center"
    android:layout_marginTop="30dp"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/edit_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:paddingStart="5dp"
        android:background="@drawable/rounded_edittext"
        android:drawableStart="@android:drawable/ic_menu_search"
        android:paddingLeft="5dp" />
</LinearLayout>

ধাপ ৩: ড্রেয়েবল ব্যাকগ্রাউন্ড (drawable/rounded_edittext.xml)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <stroke android:width="1dp" android:color="#2f6699" />
    <corners android:radius="10dp" />
</shape>

ধাপ ৪: জাভা কোড (java/MainActivity.java)

TextWatcher ইন্টারফেস ইমপ্লিমেন্ট করে onTextChanged-এ ক্যারেক্টার কাউন্ট চেক করে ইমেজ সেট/রিমুভ করা হয়েছে। R.drawable.sir নামে একটি ইমেজ ড্রেয়েবলে থাকতে হবে।

package com.example.myapplication;

import android.annotation.TargetApi;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText editText = findViewById(R.id.edit_query);
        final Drawable image = getResources().getDrawable(R.drawable.sir);
        image.setBounds(0, 0, 40, 40); // ইমেজের আকার সেট করুন

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // টেক্সট পরিবর্তনের আগে: সব ড্রেয়েবল সরিয়ে দিন
                editText.setCompoundDrawables(null, null, null, null);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // টেক্সট পরিবর্তনের সময়: যদি ৩ বা তার অধিক ক্যারেক্টার হয়
                if (count > 2 && count != 0) {
                    // বাম পাশে ইমেজ সেট করুন (start)
                    editText.setCompoundDrawables(image, null, null, null);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
                // টেক্সট পরিবর্তনের পর: কিছু করার প্রয়োজন নেই
            }
        });
    }
}

অ্যাপ্লিকেশনটি রান করুন

ডিভাইস সংযুক্ত করে Run করুন। ৩ বা তার অধিক অক্ষর লিখলে বাম পাশে ইমেজটি দেখাবে।

টেক্সট লিখার সময় EditText-এ ইমেজ ভিউ (ImageView) কীভাবে দেখাবেন?

৩+ অক্ষর লিখলে:

টেক্সট লিখার সময় EditText-এ ইমেজ ভিউ (ImageView) কীভাবে দেখাবেন?

নোট

  • setCompoundDrawables(left, top, right, bottom) মেথডে চারটি পজিশনে ড্রেয়েবল সেট করা যায়।
  • image.setBounds() কল না করলে ইমেজ দেখাবে না বা ভুল আকারে দেখাবে।
  • API 17+ এ setCompoundDrawablesRelative ব্যবহার করা RTL সাপোর্টের জন্য ভালো।
  1. অ্যান্ড্রয়েডে টাইপিং করার সময় EditText-এ ক্যারেক্টার গণনার পদ্ধতি

  2. অ্যান্ড্রয়েডে বাটনের টেক্সট ফন্ট পরিবর্তন করা

  3. অ্যান্ড্রয়েডে দুটি ছবি ওভারলে (Overlay) করে ImageView-এ দেখানো

  4. অ্যান্ড্রয়েড অ্যাপে সিম্পল টেক্সট ফাইল পড়ার পদ্ধতি