menu
এই পর্বে আমরা শিখবো কিভাবে মেন্যু নিয়ে আমরা কাজ করতে পারি । অ্যাপের ভিতর মেন্যু হয় ৪ রকমের -
১ - Options Menu
২ - Context Menu
৩ - Contextual Menu
৪ - Popup Menu
options Menu ( ActionBar এ যে মেন্যু দেখানো হয় ) দেখতে এরকম -
Context Menu (যখন কোন কিছুতে ক্লিক করলে আর একটি লিস্ট আইটেম শো করে ) দেখতে -
Contextual Menu (যখন কোন মেন্যুর উপর আমরা ২-১ সেকেন্ড হোভার বা ধরে রাখি ) দেখতে -
Popup Menu দেখতে -
প্রথমে Options Menu নিয়ে কাজ করা যাক -
মেন্যু নিয়ে কাজ করতে নতুন একটি ডিরেক্টর ফাইল তৈরি করতে হবে যার নাম থাকবে menu ।
তো চলুন নতুন ডিরেক্টর ফাইল তৈরি করা যাক - res->New-> Directory :-
নতুন ডিরেক্টর ফাইল এর নাম menu ই দিতে হবে । অন্য কোন নাম দিলে হবে নাহ ।
এবার menu ফোল্ডার এর ভিতর মেন্যু তৈরি করতে নতুন Xml ফাইল তৈরি করতে হবে । মেন্যুর জন্য Xml ফাইল তৈরি করতে - menu->New->Menu resource file :-
Menu resource file এর নাম দিলাম options_menu । তাহলে যে Xml ফাইল টা তৈরি হল -
এবার যে মেন্যুগুলো তৈরি করবো সেগুলো Menu ট্যাগের ভিতর এক একটি item ট্যাগের ভিতর নিবো । তো মেন্যু হিসেবে চলুন কতগুলো সোশ্যাল মিডিয়ার একটি লিস্ট তৈরি করা যাক -
options_menu.xml -
যে মেন্যু টা আমরা দেখাতে চাই তার লিস্ট তৈরি করে ফেললাম । এবার এটা যে এক্টিভিটি তে দেখাতে চাই সেখানে এটা শো করানোর কোড লিখতে হবে -
MainActivity.java -
মেন্যু শো করানোর জন্য onCreate ম্যাথডের বাইরে onCreateOptionsMenu ম্যাথডটি লিখতে হবে । ম্যাথডের ভিতরে Inflater ব্যাবহার করলাম । কোন এক্টিভিটিতে যখন আমরা একের অধিক xml ফাইল ব্যাবহার করবো তখন Inflater ব্যাবহার করতে হয় । Inflater দুই ধরনের - layoutInflater এবং menuInflater । আমরা যেহেতু এখানে মেন্যু তৈরি ব্যাবহার করছি তাই menuInflater এর অব্জেক্ট তৈরি করলাম যেটি মেন্যু রিটার্ন করবে getMenuInflater() ম্যাথড দ্বারা ।
এরপরের লাইনে menuInflater এর অব্জেক্ট এর সাথে xml ফাইলটি এবং মেন্যু ক্লাসটি এড করে দিলাম । এবার অ্যাপটি রান করুন । তাহলে উপরের ডানের দিকে ( : ) এ ক্লিক করলে আমরা যে লিস্ট টি দেখতে পাবো -
চলুন মেন্যু আইটেম টা আরো একটু সুন্দর করা যাক (options_menu.xml এ ) -
showAsAction ট্যাগ মানে হল এটি ActionBar এ দেখাবে কিনা। এটি ইউজ করলে যে ৫ টি ভ্যালু আসে তা হল -
never - এটি ActionBar এ দেখাবে কখনো দেখাবে নাহ
collapseActionView - ঃ এর ভিতরে লিস্ট আকারেই দেখাবে
withText - আইকন ইউজ করলেও টেক্স দেখাবে
ifRoom - যদি ActionBar এ জায়গায় খালি থাকে তবে দেখাবে
always- সবসময়ই ActionBar এ দেখাবে
এই ডিজাইনের ক্ষেত্রে আমি প্রত্যেকটি তে ifRoom ব্যাবহার করলাম । এবং icon ট্যাগের সাহায্যে আইকন ও ব্যাবহার করলাম । আইকন এর ক্ষেত্রে নিয়ম হল লিস্টের যেসব অপশন ActionBar এ দেখা যাবে সেগুলোর ক্ষেত্রে আইকন দেখাবে কিন্তু : তে ক্লিক এর মাধ্যমে যেসব অপশন শো করানো হবে সেখানে আইকন দেখাবে নাহ । বিভিন্ন আইকন ফ্রি ডাউনলোড করতে https://www.flaticon.com/ এই ওয়েবসাইট এর সাহায্য নিতে পারেন ।
আমাদের xml কোড টা -
এবার আবার অ্যাপটি রান করুন । তাহলে আমরা এরকম দেখতে পাবো -
আজকে এ পর্যন্তই । আগামী পর্বে এখান থেকেই শুরু করবো আমরা । সেখানে দেখানো হব এই লিস্টের কোন অপশন এ ক্লিক করলে সেই কার্যক্রম কিভাবে করা হয় সেটি । এরপর আমরা অন্যান্য মেন্যু গুলো দেখবো ।
১ - Options Menu
২ - Context Menu
৩ - Contextual Menu
৪ - Popup Menu
options Menu ( ActionBar এ যে মেন্যু দেখানো হয় ) দেখতে এরকম -
Context Menu (যখন কোন কিছুতে ক্লিক করলে আর একটি লিস্ট আইটেম শো করে ) দেখতে -
Contextual Menu (যখন কোন মেন্যুর উপর আমরা ২-১ সেকেন্ড হোভার বা ধরে রাখি ) দেখতে -
Popup Menu দেখতে -
প্রথমে Options Menu নিয়ে কাজ করা যাক -
মেন্যু নিয়ে কাজ করতে নতুন একটি ডিরেক্টর ফাইল তৈরি করতে হবে যার নাম থাকবে menu ।
তো চলুন নতুন ডিরেক্টর ফাইল তৈরি করা যাক - res->New-> Directory :-
নতুন ডিরেক্টর ফাইল এর নাম menu ই দিতে হবে । অন্য কোন নাম দিলে হবে নাহ ।
এবার menu ফোল্ডার এর ভিতর মেন্যু তৈরি করতে নতুন Xml ফাইল তৈরি করতে হবে । মেন্যুর জন্য Xml ফাইল তৈরি করতে - menu->New->Menu resource file :-
Menu resource file এর নাম দিলাম options_menu । তাহলে যে Xml ফাইল টা তৈরি হল -
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
</menu>
এবার যে মেন্যুগুলো তৈরি করবো সেগুলো Menu ট্যাগের ভিতর এক একটি item ট্যাগের ভিতর নিবো । তো মেন্যু হিসেবে চলুন কতগুলো সোশ্যাল মিডিয়ার একটি লিস্ট তৈরি করা যাক -
options_menu.xml -
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/facebook"
android:title="Facebook"></item>
<item android:id="@+id/twitter"
android:title="Twitter"></item>
<item android:id="@+id/whatsapp"
android:title="Whatsapp"></item>
<item android:id="@+id/instagram"
android:title="Instagram"></item>
</menu>
যে মেন্যু টা আমরা দেখাতে চাই তার লিস্ট তৈরি করে ফেললাম । এবার এটা যে এক্টিভিটি তে দেখাতে চাই সেখানে এটা শো করানোর কোড লিখতে হবে -
MainActivity.java -
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.options_menu,menu);
return super.onCreateOptionsMenu(menu);
}
মেন্যু শো করানোর জন্য onCreate ম্যাথডের বাইরে onCreateOptionsMenu ম্যাথডটি লিখতে হবে । ম্যাথডের ভিতরে Inflater ব্যাবহার করলাম । কোন এক্টিভিটিতে যখন আমরা একের অধিক xml ফাইল ব্যাবহার করবো তখন Inflater ব্যাবহার করতে হয় । Inflater দুই ধরনের - layoutInflater এবং menuInflater । আমরা যেহেতু এখানে মেন্যু তৈরি ব্যাবহার করছি তাই menuInflater এর অব্জেক্ট তৈরি করলাম যেটি মেন্যু রিটার্ন করবে getMenuInflater() ম্যাথড দ্বারা ।
এরপরের লাইনে menuInflater এর অব্জেক্ট এর সাথে xml ফাইলটি এবং মেন্যু ক্লাসটি এড করে দিলাম । এবার অ্যাপটি রান করুন । তাহলে উপরের ডানের দিকে ( : ) এ ক্লিক করলে আমরা যে লিস্ট টি দেখতে পাবো -
চলুন মেন্যু আইটেম টা আরো একটু সুন্দর করা যাক (options_menu.xml এ ) -
showAsAction ট্যাগ মানে হল এটি ActionBar এ দেখাবে কিনা। এটি ইউজ করলে যে ৫ টি ভ্যালু আসে তা হল -
never - এটি ActionBar এ দেখাবে কখনো দেখাবে নাহ
collapseActionView - ঃ এর ভিতরে লিস্ট আকারেই দেখাবে
withText - আইকন ইউজ করলেও টেক্স দেখাবে
ifRoom - যদি ActionBar এ জায়গায় খালি থাকে তবে দেখাবে
always- সবসময়ই ActionBar এ দেখাবে
এই ডিজাইনের ক্ষেত্রে আমি প্রত্যেকটি তে ifRoom ব্যাবহার করলাম । এবং icon ট্যাগের সাহায্যে আইকন ও ব্যাবহার করলাম । আইকন এর ক্ষেত্রে নিয়ম হল লিস্টের যেসব অপশন ActionBar এ দেখা যাবে সেগুলোর ক্ষেত্রে আইকন দেখাবে কিন্তু : তে ক্লিক এর মাধ্যমে যেসব অপশন শো করানো হবে সেখানে আইকন দেখাবে নাহ । বিভিন্ন আইকন ফ্রি ডাউনলোড করতে https://www.flaticon.com/ এই ওয়েবসাইট এর সাহায্য নিতে পারেন ।
আমাদের xml কোড টা -
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/facebook"
android:title="Facebook"
app:showAsAction="ifRoom"
android:icon="@drawable/facebook"></item>
<item android:id="@+id/twitter"
android:title="Twitter"
app:showAsAction="ifRoom"
android:icon="@drawable/twitter"></item>
<item android:id="@+id/whatsapp"
android:title="Whatsapp"
app:showAsAction="ifRoom"
android:icon="@drawable/whatsapp"></item>
<item android:id="@+id/instagram"
android:title="Instagram"
app:showAsAction="ifRoom"
android:icon="@drawable/instagram"></item>
</menu>
এবার আবার অ্যাপটি রান করুন । তাহলে আমরা এরকম দেখতে পাবো -
আজকে এ পর্যন্তই । আগামী পর্বে এখান থেকেই শুরু করবো আমরা । সেখানে দেখানো হব এই লিস্টের কোন অপশন এ ক্লিক করলে সেই কার্যক্রম কিভাবে করা হয় সেটি । এরপর আমরা অন্যান্য মেন্যু গুলো দেখবো ।
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন