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

অ্যান্ড্রয়েডে টুলবারের টাইটেলে OnClickListener কীভাবে সেট করবেন?

কাস্টম Toolbar-এ টাইটেল টেক্সটভিউতে ক্লিক লিস্টেনার যোগ করা

এই উদাহরণটি দেখাবে কিভাবে স্ট্যান্ডার্ড ActionBar ছাড়া androidx.appcompat.widget.Toolbar ব্যবহার করে একটি কাস্টম টাইটেল TextView যোগ করা যায় এবং সেটিতে ক্লিক লিস্টেনার সেট করা যায়। এটি টাইটেলে ক্লিক করলে নির্দিষ্ট অ্যাকশন (যেমন: হোমে যাওয়া, মেনু খোলা) করার জন্য দরকারী।

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

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

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

Toolbar উইজেটের ভিতরে একটি স্টাইল করা TextView (id: toolbarTitle) রাখা হয়েছে যেটিতে ক্লিকেবল ব্যাকগ্রাউন্ড সেট করা হয়েছে।

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:app = "https://schemas.android.com/apk/res-auto"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:orientation = "vertical">
    <android.support.v7.widget.Toolbar
        android:id = "@+id/my_awesome_toolbar"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:background = "@color/colorPrimary"
        android:minHeight = "?attr/actionBarSize">
        <TextView
            android:id = "@+id/toolbarTitle"
            style = "@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
            android:background = "?attr/selectableItemBackground"
            android:layout_width = "wrap_content"
            android:gravity = "center_vertical"
            android:layout_height = "match_parent" />
    </android.support.v7.widget.Toolbar>
    <TextView
        android:id = "@+id/text"
        android:textSize = "30sp"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent" />
</LinearLayout>

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

ডিফল্ট একশনবার লুকিয়ে কাস্টম টুলবার সেট করা হয়েছে, তারপর টাইটেল টেক্সটভিউতে ক্লিক লিস্টেনার যোগ করা হয়েছে।

package com.example.myapplication;

import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toolbar; // নোট: androidx.appcompat.widget.Toolbar ব্যবহার করা উচিত

public class MainActivity extends AppCompatActivity {
    TextView textView;

    @SuppressLint("RestrictedApi")
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().hide(); // ডিফল্ট একশনবার লুকান
        setContentView(R.layout.activity_main);

        // কাস্টম টুলবার সেট আপ (নোট: কাস্টম মেথড ব্যবহার করা হয়েছে, সেটসাপোর্টএ্যাকশনবার নয়)
        setSupportActionBar((Toolbar) findViewById(R.id.my_awesome_toolbar)); // কাস্টম মেথড নিচে ডিফাইন

        TextView toolbarTitle = findViewById(R.id.toolbarTitle);
        toolbarTitle.setText("Home");
        toolbarTitle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish(); // ক্লিক করলে এক্টিভিটি ফিনিশ
            }
        });

        textView = findViewById(R.id.text);
        textView.setText("Action bar title clicked");
    }

    // কাস্টম মেথড (সত্যিকারের setSupportActionBar টুলবার নেয়)
    private void setSupportActionBar(Toolbar toolbar) {
        // খালি ইমপ্লিমেন্টেশন - মূল কোডে Toolbar ব্যবহার করা উচিত
    }
}

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

ডিভাইস সংযুক্ত করে Run করুন। টুলবারের "Home" টেক্সটে ক্লিক করলে এক্টিভিটি বন্ধ হবে।

অ্যান্ড্রয়েডে টুলবারের টাইটেলে OnClickListener কীভাবে সেট করবেন?

সঠিক এবং আধুনিক ইমপ্লিমেন্টেশন

উপরের কোডে android.widget.Toolbar (সিস্টেম উইজেট) ব্যবহার করা হয়েছে, কিন্তু androidx.appcompat.widget.Toolbar ব্যবহার করা উচিত। সঠিক প্যাটার্ন:

// Import
import androidx.appcompat.widget.Toolbar;

// onCreate-এ
Toolbar toolbar = findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar); // বিল্ট-ইন মেথড
getSupportActionBar().setDisplayShowTitleEnabled(false); // ডিফল্ট টাইটেল লুকান

TextView toolbarTitle = findViewById(R.id.toolbarTitle);
toolbarTitle.setText("Home");
toolbarTitle.setOnClickListener(v -> {
    // আপনার কাস্টম লজিক
    onBackPressed(); // বা NavController.navigateUp()
});

এই প্যাটার্ন ম্যাটেরিয়াল ডিজাইন এবং Navigation Component-এর সাথে সাথ거운।

  1. অ্যান্ড্রয়েডে অ্যাকশন বার টাইটেল সেন্টার অ্যালাইন করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ActionBar/Toolbar-এর উচ্চতা পাওয়ার পদ্ধতি

  3. Android-এ অ্যাকশন বারের আকার পরিবর্তন করার পদ্ধতি

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