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

অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি বাটনে drawableLeft সেট করার পদ্ধতি

setCompoundDrawablesWithIntrinsicBounds() ব্যবহার করে বাটনে আইকন যোগ করা

অ্যান্ড্রয়েড বাটনে টেক্সটের পাশে আইকন (drawableLeft/Start) যোগ করার জন্য `setCompoundDrawablesWithIntrinsicBounds()` মেথড ব্যবহার করা হয়। এটি XML-এ `android:drawableStart`/`drawableLeft` এর সমতুল্য প্রোগ্রাম্যাটিক্যালি করে।

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

স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।

ধাপ ২: লেআউট (XML-এ ইতিমধ্যে ড্রয়েবল থাকতে পারে)

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Button/DrawableLeft"
        android:textSize="24sp"
        android:textStyle="bold"
        android:drawableStart="@drawable/ic_brush" />
</RelativeLayout>

ধাপ ৩: প্রোগ্রাম্যাটিক্যালি ড্রয়েবল সেট করুন

src/MainActivity.java:

import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = findViewById(R.id.button);
        
        // ড্রয়েবল রিসোর্স পাওয়া
        Drawable img = getResources().getDrawable(R.drawable.ic_brush);
        
        // Intrinsic bounds সেট করে বামে রাখা
        // প্যারামিটার: left, top, right, bottom
        button.setCompoundDrawablesWithIntrinsicBounds(img, null, null, null);
        
        // অথবা স্পষ্টভাবে বাউন্ডস সেট করে:
        // img.setBounds(0, 0, img.getIntrinsicWidth(), img.getIntrinsicHeight());
        // button.setCompoundDrawables(img, null, null, null);
    }
}

মেথড সিগনেচার ব্যাখ্যা

setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)
  • left: টেক্সটের বামে (LTR-এ) / ডানে (RTL-এ)
  • top: টেক্সটের উপরে
  • right: টেক্সটের ডানে (LTR-এ) / বামে (RTL-এ)
  • bottom: টেক্সটের নিচে
  • `null` দিলে সেট পজিশনে কোনো ড্রয়েবল থাকে না

আরও উদাহরণ

// শুধু ডানদিকে আইকন
button.setCompoundDrawablesWithIntrinsicBounds(null, null, rightDrawable, null);

// উপরে এবং নিচে আইকন
button.setCompoundDrawablesWithIntrinsicBounds(null, topDrawable, null, bottomDrawable);

// সব দিকেই
button.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);

// ড্রয়েবল ক্লিয়ার করা
button.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);

DrawableCompat ব্যবহার (ভেক্টর ড্রয়েবলের জন্য)

API 23-এর নিচে ভেক্টর ড্রয়েবল সাপোর্টের জন্য:

import android.support.v4.graphics.drawable.DrawableCompat;

Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_vector));
DrawableCompat.setTint(drawable, Color.WHITE); // রঙ পরিবর্তন
button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);

XML vs প্রোগ্রাম্যাটিক

পদ্ধতিব্যবহার ক্ষেত্র
XML (android:drawableStart)স্ট্যাটিক আইকন, সহজ রক্ষণাবেক্ষণ
প্রোগ্রাম্যাটিক (setCompoundDrawables)ডাইনামিক আইকন, রানটাইমে পরিবর্তন, শর্তসাপেক্ষ
অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি বাটনে drawableLeft সেট করার পদ্ধতি
  1. অ্যান্ড্রয়েড অ্যাপে প্রোগ্রাম্যাটিক্যালি লোকেল (ভাষা) সেট করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ScrollView প্রোগ্রাম্যাটিক্যালি ডিজেবল করার পদ্ধতি

  3. Android-এ প্রোগ্রামেটিক্যালি অ্যাপ্লিকেশন বন্ধ করা

  4. অ্যান্ড্রয়েডে VPN সেট আপ করার পূর্ণ নির্দেশিকা