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

অ্যান্ড্রয়েডে SnackBar-এর লেআউট কাস্টমাইজ করার পদ্ধতি

SnackBar কাস্টমাইজেশন: রঙ, ফন্ট এবং স্টাইল পরিবর্তন করা

স্ন্যাকবার (SnackBar) হলো ম্যাটেরিয়াল ডিজাইনের একটি হালকা নোটিফিকেশন কম্পোনেন্ট যা স্ক্রিনের নিচে দৃশ্যমান হয়। ডিফল্ট স্ন্যাকবার কাস্টমাইজ করা যায় না, কিন্তু এর ভিউ এক্সেস করে আমরা ব্যাকগ্রাউন্ড রঙ, টেক্সট রঙ, ফন্ট এবং একশন বাটনের স্টাইল পরিবর্তন করতে পারি।

প্রয়োজনীয় ধাপসমূহ

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

Android Studio-তে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট ফাইল (activity_main.xml)

<?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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    android:gravity="center"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnCustomSnackbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:backgroundTint="@color/colorAccent"
        android:text="কাস্টম স্ন্যাকবার দেখান"
        android:textColor="@android:color/white" />

</LinearLayout>

ধাপ ৩: MainActivity.java - কাস্টমাইজেশন লজিক

package com.example.customsnackbar;

import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnCustomSnackbar = findViewById(R.id.btnCustomSnackbar);
        btnCustomSnackbar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showCustomSnackbar(v);
            }
        });
    }

    private void showCustomSnackbar(View view) {
        // স্ন্যাকবার তৈরি করুন
        Snackbar snackbar = Snackbar.make(view, "এটি একটি কাস্টম স্ন্যাকবার", Snackbar.LENGTH_LONG);

        // স্ন্যাকবার ভিউ এক্সেস করুন
        View snackbarView = snackbar.getView();
        
        // ব্যাকগ্রাউন্ড রঙ পরিবর্তন করুন
        snackbarView.setBackgroundColor(Color.WHITE);

        // টেক্সট ভিউগুলো খুঁজে বের করুন
        TextView textView = snackbarView.findViewById(com.google.android.material.R.id.snackbar_text);
        TextView actionTextView = snackbarView.findViewById(com.google.android.material.R.id.snackbar_action);

        // কাস্টম ফন্ট লোড করুন (assets/fonts/ ফোল্ডারে ফন্ট ফাইল রাখুন)
        try {
            Typeface customFont = Typeface.createFromAsset(getAssets(), "fonts/LatoRegular.ttf");
            if (textView != null) textView.setTypeface(customFont);
            if (actionTextView != null) actionTextView.setTypeface(customFont);
        } catch (Exception e) {
            e.printStackTrace();
        }

        // টেক্সট রঙ সেট করুন
        if (textView != null) textView.setTextColor(Color.BLACK);
        if (actionTextView != null) actionTextView.setTextColor(Color.BLUE);

        // একশন বাটন যোগ করুন
        snackbar.setAction("UNDO", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "অ্যাকশন সম্পন্ন!", Snackbar.LENGTH_SHORT).show();
            }
        });

        // স্ন্যাকবার প্রদর্শন করুন
        snackbar.show();
    }
}

ধাপ ৪: ফন্ট ফাইল যোগ করুন (ঐচ্ছিক)

  1. Project view-এ app/src/main/assets/fonts/ ফোল্ডার তৈরি করুন
  2. সেখানে আপনার পছন্দের .ttf ফন্ট ফাইল রাখুন (যেমন: LatoRegular.ttf)

ধাপ ৫: ম্যানিফেস্ট ফাইল

সাধারণ ম্যানিফেস্ট কনফিগারেশন। Material Components লাইব্রেরি ডিপেন্ডেন্সি থাকতে হবে:

dependencies {
    implementation "com.google.android.material:material:1.9.0"
}

উন্নত কাস্টমাইজেশন টিপস

পুরো কাস্টম লেআউট ব্যবহার করা

আপনি পুরো ভিউ কাস্টমাইজ করতে চাইলে Snackbar.make() এর পরিবর্তে Snackbar.SnackbarLayout ব্যবহার করতে পারেন:

// কাস্টম লেআউট ইনফ্লেট করুন
View customView = getLayoutInflater().inflate(R.layout.custom_snackbar_layout, null);
Snackbar snackbar = Snackbar.make(view, "", Snackbar.LENGTH_LONG);
Snackbar.SnackbarLayout snackbarLayout = (Snackbar.SnackbarLayout) snackbar.getView();
snackbarLayout.removeAllViews();
snackbarLayout.addView(customView, 0);
snackbar.show();

স্ন্যাকবার পজিশন এবং মার্জিন সেট করা

View snackbarView = snackbar.getView();
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) snackbarView.getLayoutParams();
params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
params.setMargins(0, 100, 0, 0); // টপ থেকে 100dp নিচে
snackbarView.setLayoutParams(params);

ফলাফল

অ্যাপ্লিকেশন রান করে বাটনে ক্লিক করলে সাদা ব্যাকগ্রাউন্ড, কালো টেক্সট, নীল একশন বাটন এবং কাস্টম ফন্টসহ একটি স্ন্যাকবার দেখাবে।

অ্যান্ড্রয়েডে SnackBar-এর লেআউট কাস্টমাইজ করার পদ্ধতি
  1. অ্যান্ড্রয়েড ফ্র্যাগমেন্টে Context ব্যবহারের পদ্ধতি

  2. How to play an android notification sound?

  3. অ্যান্ড্রয়েডে Snackbar ব্যবহার করার পদ্ধতি

  4. অ্যান্ড্রয়েডে লাইন আঁকা (Canvas এবং Paint ব্যবহার করে)