অ্যান্ড্রয়েড পপ-আপ মেনু তৈরি

এর আগে আমরা ActionBar বা App Bar এ কিভাবে মেনু তৈরি করা যায়, তা দেখেছি। আজ দেখব কিভাবে একটি পপ-আপ মেনু তৈরি করা যায়। তার জন্য আমরা একটি এন্ড্রয়েড অ্যাপলিকেশন তৈরি করে নিব। resource folder এ যদি menu নামে কোন ফোল্ডার না থাকে, তাহলে menu নামে একটি ফোল্ডার তৈরি করে নিব। তার জন্য res ফোল্ডারের উপর রাইট ক্লিক করে New> Directory  তে ক্লিক করব। এবং ডিরেক্টরির নাম দিব menu.

 

create folder

 

এরপর আমাদের কাজ হচ্ছে আমাদের পপআপ মেনুতে কি কি আইটেম থাকবে, সে আইটেম গুলোর জন্য একটা xml ফাইল তৈরি করা। তার জন্য menu ফোল্ডারের উপর রাইট ক্লিক করে সিলেক্ট করব Menu resource file এবং একটি নাম দিব। যেমন poupup_menu.xml

 

menu resource file

 

poupup_menu.xml মেনু তৈরি করার পর অটোমেটিক কিছু কোড লেখা থাকবে, যেমনঃ

 


<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
     
</menu>


 

এটার ভেতর আমাদের মেনুর আইটেম গুলো যুক্ত করব, তাহলে হবেঃ

 


<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/one" android:title="One"/>

    <item android:id="@+id/two" android:title="Two"/>

    <item android:id="@+id/three" android:title="Three"/>
</menu>
</pre>

 

এরপরের কাজ হচ্ছে আমাদের Main লেয়াউটে একটা বাটন তৈরি করা, যেখানে ক্লিক করলে আমাদের পপ-আপ মেনু দেখাবে। তার জন্যঃ

 


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="me.jakir.popupmenu.MainActivity">

    <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="50dp" android:text="Show Popup Menu" />
</RelativeLayout>

 

এবং শেষে Main Activity জাভা ফাইল থেকে আমাদের বাটনে যখন ক্লিক করবে, তখন যেন মেনু দেখায়, সে কোড লিখতে হবে।


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button button1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Creating the instance of PopupMenu
                PopupMenu popup = new PopupMenu(MainActivity.this, button1);
                //Inflating the Popup using xml file
                popup.getMenuInflater()
                        .inflate(R.menu.popup_menu, popup.getMenu());

                //registering popup with OnMenuItemClickListener
                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    public boolean onMenuItemClick(MenuItem item) {
                        Toast.makeText(
                                MainActivity.this,
                                "You Clicked : " + item.getTitle(),
                                Toast.LENGTH_SHORT
                        ).show();
                        return true;
                    }
                });

                popup.show(); //showing popup menu
            }
        }); //closing the setOnClickListener method

    }
}</pre>

 

যখন বাটনে ক্লিক করবে, তখন আমাদের পপ-আপ মেনু দেখাবে। এবং যখন পপ-আপ মেনুর কোন আইটেমে ক্লিক করা হবে, তখন একটা Toast দেখাবে। এই। নিছে ডেমোঃ

 

অ্যাপটির সোর্স কোড। 

ধন্যবাদ সবাইকে।


Leave a Reply

Your email address will not be published. Required fields are marked *