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

Android ActionBar-এ মেনু আইটেম হাইড/শো করার পদ্ধতি

MenuItem.setVisible() দিয়ে অ্যাকশনবার আইটেম টগল করা

Toolbar/ActionBar-এ মেনু আইটেমকে রানটাইমে দেখা/লুকানো (Hide/Show) এবং সক্রিয়/নিষ্ক্রিয় (Enable/Disable) করার পদ্ধতি।

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

Android Studio-তে নতুন প্রজেক্ট তৈরি করুন (Theme.AppCompat বা MaterialComponents थीম ব্যবহার করুন)।

ধাপ ২: লেআউট (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"
    android:gravity="center"
    tools:context=".MainActivity">
    <ToggleButton
        android:id="@+id/btnMenuItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textOn="Show Share"
        android:textOff="Hide Share" />
</LinearLayout>

ধাপ ৩: মেনু রিসোর্স (res/menu/menuitem.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/menu_action_share"
        android:icon="@android:drawable/ic_menu_share"
        android:title="Share"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/menu_action_settings"
        android:title="Settings"
        app:showAsAction="never" />
</menu>

ধাপ ৪: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    ToggleButton toggleButton;
    Menu menu;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        toggleButton = findViewById(R.id.btnMenuItem);
        toggleButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
            if (menu != null) {
                MenuItem shareItem = menu.findItem(R.id.menu_action_share);
                shareItem.setVisible(isChecked);
                shareItem.setEnabled(isChecked);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menuitem, menu);
        this.menu = menu; // মেনু রেফারেন্স রাখুন
        
        // ডিফল্টভাবে ভিজিবল
        MenuItem item = menu.findItem(R.id.menu_action_share);
        if (item != null) {
            item.setVisible(true);
        }
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.menu_action_share) {
            // শেয়ার লজিক
            Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("text/plain");
            shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this out!");
            startActivity(Intent.createChooser(shareIntent, "Share via"));
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

ধাপ ৫: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.menuvisibility">
    <application
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
        <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>

Toolbar ব্যবহার করলে (AppCompat)

// Layout
<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize" />

// Activity
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

// মেনু ইনফ্লেট
toolbar.inflateMenu(R.menu.menuitem);
Menu menu = toolbar.getMenu();
// menu.findItem(...).setVisible(...)

MenuItem মেথড রেফারেন্স

মেথডকাজ
setVisible(boolean)দেখানো/লুকানো
setEnabled(boolean)সক্রিয়/নিষ্ক্রিয় (গ্রে আউট)
setTitle(CharSequence)টাইটেল পরিবর্তন
setIcon(Drawable)আইকন পরিবর্তন
setCheckable(boolean)চেকবক্স সক্ষম
setChecked(boolean)চেক স্টেট
setActionView(View)কাস্টম ভিউ (সার্চ, প্রগ্রেস)

সেরা অনুশীলন

  • মেনু রেফারেন্স onCreateOptionsMenu-এ সংরক্ষণ করুন
  • invalidateOptionsMenu() কল করলে মেনু রি-ক্রিয়েট হয় (পুরনো রেফারেন্স বায়adagi হয়)
  • Fragment-এ setHasOptionsMenu(true) এবং onCreateOptionsMenu ওভাররাইড করুন
  • Conditional visibility জন্য লজিক onPrepareOptionsMenu-এ রাখুন
  1. ওয়ার্ডে টেক্সট শো ও হাইড করার পদ্ধতি

  2. Tkinter-এ উইজেট দেখানো এবং লুকানো

  3. ওএস এক্স এল ক্যাপিটান-এ মেনুবার (Menu Bar) লুকানো (Hide) করার উপায়

  4. অ্যান্ড্রয়েডে ফাইল ও অ্যাপ সুরক্ষিতভাবে লুকান: ধাপে ধাপে গাইড