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

অ্যান্ড্রয়েডে ওভারফ্লো মেনু আইকন প্রোগ্রামেটিক্যালি পরিবর্তন করা

Toolbar-এ মেনু আইটেমের ভিজিবিলিটি এবং আইকন ডাইনামিক্যালি নিয়ন্ত্রণ

এই উদাহরণটি দেখাবে কীভাবে onPrepareOptionsMenu() ব্যবহার করে রানটাইমে মেনু আইটেম লুকানো/দেখানো এবং টুলবারের ওভারফ্লো মেনু কাস্টমাইজ করা যায়।

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

Android Studio-তে File → New Project নির্বাচন করুন।

ধাপ ২: লেআউট (res/layout/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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.v7.widget.Toolbar>

</LinearLayout>

ধাপ ৩: মেইন এক্টিভিটি (src/MainActivity.java)

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Toolbar toolbar;

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

        toolbar = findViewById(R.id.toolbar);
        toolbar.setTitle("MyToolBar");
        toolbar.setTitleTextColor(Color.WHITE);
        // setSupportActionBar(toolbar); // অপশনাল
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.mymenu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.option1:
                Toast.makeText(getApplicationContext(), "Bluetooth Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option2:
                Toast.makeText(getApplicationContext(), "Call Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option3:
                Toast.makeText(getApplicationContext(), "About Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.option4:
                Toast.makeText(getApplicationContext(), "Chat Option Selected", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        invalidateOptionsMenu();
        // option2 লুকান, option4 দেখান
        menu.findItem(R.id.option2).setVisible(false);
        menu.findItem(R.id.option4).setVisible(true);
        return super.onPrepareOptionsMenu(menu);
    }
}

ধাপ ৪: মেনু রিসোর্স (res/menu/mymenu.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/option1"
        android:orderInCategory="1"
        android:title="Bluetooth"
        android:icon="@drawable/ic_bluetooth"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/option2"
        android:orderInCategory="2"
        android:title="Call"
        android:icon="@drawable/ic_call"
        app:showAsAction="ifRoom|collapseActionView" />

    <item
        android:id="@+id/option4"
        android:title="Chat"
        android:visible="false"
        android:orderInCategory="3"
        android:icon="@drawable/ic_chat"
        app:showAsAction="ifRoom|collapseActionView"/>

    <item
        android:id="@+id/option3"
        android:title="About"
        app:showAsAction="never" />

</menu>

ধাপ ৫: মেনিফেস্ট (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

দ্রষ্টব্য

  • onPrepareOptionsMenu() প্রতিবার মেনু খোলার আগে কল হয়। এখানে ডাইনামিক্যালি আইটেম শো/হাইড করা যায়।
  • আইকন রিসোর্স (@drawable/ic_bluetooth ইত্যাদি) আপনার প্রজেক্টে থাকতে হবে।
  • অ্যাপকম্প্যাট টুলবার ব্যবহার করলে setSupportActionBar(toolbar) কল করলে সিস্টেম অ্যাকশনবার বদলে টুলবার কাজ করে।

ফলাফল

টুলবারে ব্লুটুথ আইকন দেখাবে। "Call" আইটেম লুকানো থাকবে, "Chat" আইটেম দেখাবে। ওভারফ্লো মেনুতে "About" থাকবে।

অ্যান্ড্রয়েডে ওভারফ্লো মেনু আইকন প্রোগ্রামেটিক্যালি পরিবর্তন করা

অ্যান্ড্রয়েডে ওভারফ্লো মেনু আইকন প্রোগ্রামেটিক্যালি পরিবর্তন করা

  1. অ্যান্ড্রয়েডে অপশন মেনুর ব্যাকগ্রাউন্ড রঙ পরিবর্তন করার পদ্ধতি

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

  3. Android 12-এ অ্যাপ আইকনের আকার কীভাবে পরিবর্তন করবেন

  4. Android-এ কীবোর্ড কীভাবে পরিবর্তন করবেন?