Showing posts with label Option Menu. Show all posts
Showing posts with label Option Menu. Show all posts

Tuesday, December 13, 2016

Menu,Context Menu, Option Menu, Popup Menu, Main Menu

Menu is use to select single option from number of listed choice. In the android three type of menu used to select option. This are-
  1. Option Menu - It will be shown when user click on three dots(Top right corner).
  2. Context Menu - It will be shown when user long click on registered object.
  3. Pop up Menu - It will be shown when user long click on any object which is registered to open popup menu.




 
Steps to use Menu in your project.
  1. Crate a project in android studio.
     
  2. Open your main_activity.xml and update it-

    <?xml version="1.0" encoding="utf-8"?>
    
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context="com.pankaj.menudemo.MainActivity">
    
        <!--This is an action bar configuration if you want to customization in it then you can here.-->
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay" />
    
        </android.support.design.widget.AppBarLayout>
    
        <!--Main Content-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            tools:context="com.pankaj.menudemo.MainActivity">
    
            <!--Button to open context menu-->
            <Button
                android:id="@+id/btnContaxtMenu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Context Menu" />
    
            <!--Button to open popup menu-->
            <Button
                android:id="@+id/btnPopupMenu"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="openPopupMenu"
                android:text="Popup Menu" />
    
        </LinearLayout>
    
    </android.support.design.widget.CoordinatorLayout>
    
     
  3. Create a menu file in menu directory(main_menu.xml).

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <!--I am using three element in menu you can update it according to your need.-->
        <!--In the option menu first item will be show with image icon and other two option will be show in the form of listing.-->
        <!--In the context and popup menu all three item will be show in listing form.-->
    
        <item
            android:id="@+id/mPointOfAndroid"
            android:icon="@android:drawable/ic_dialog_info"
            android:orderInCategory="1"
            android:title="Point of Android"
            app:showAsAction="ifRoom" />
    
        <item
            android:id="@+id/mSettings"
            android:orderInCategory="2"
            android:title="Settings" />
    
        <item
            android:id="@+id/mLogout"
            android:orderInCategory="3"
            android:title="Logout" />
    </menu>
    
    
    

  4. Open your MainActivity.JAVA class and update it -

    package com.pankaj.menudemo;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.PopupMenu;
    import android.support.v7.widget.Toolbar;
    import android.view.ContextMenu;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        //_________create objects of buttons
        private Button btnPopupMenu, btnContaxtMenu;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //_________create toolbar object
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    
            //_________add toolbar
            setSupportActionBar(toolbar);
    
            //_________initialize buttons
            btnPopupMenu = (Button) findViewById(R.id.btnPopupMenu);
            btnContaxtMenu = (Button) findViewById(R.id.btnContaxtMenu);
    
            //_________register button for context menu
            registerForContextMenu(btnContaxtMenu);
        }
    
        //_________override method to create context menu
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
    
            //________add title of the menu, if is it.
            menu.setHeaderTitle("This is a Context Menu");
    
            //_________add icon of the menu, if is it.
            menu.setHeaderIcon(getResources().getDrawable(R.mipmap.ic_launcher));
    
            //_____________inflate main_menu.xml file to show option in context menu
            getMenuInflater().inflate(R.menu.menu_main, menu);
        }
    
        //_________override method to process selected context menu option.
        @Override
        public boolean onContextItemSelected(MenuItem item) {
    
            //_________Message will be shown, When option selected from context menu.
            Toast.makeText(this, "Context Menu : " + item.getTitle(), Toast.LENGTH_SHORT).show();
            return super.onContextItemSelected(item);
        }
    
        //_________override method to create options menu
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            // Inflate the menu; this adds items to the action bar if it is present.
            //_____________inflate main_menu.xml file to show option in popup menu
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        //_________override method to process selected options menu option.
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            //_________Message will be shown, When option selected from options menu.
            Toast.makeText(this, "Option Menu : " + item.getTitle(), Toast.LENGTH_SHORT).show();
            return super.onOptionsItemSelected(item);
        }
    
        //_________override method to create popup menu.
        public void openPopupMenu(View view) {
    
            //_________create popup menu object
            PopupMenu popupMenu = new PopupMenu(this, btnPopupMenu);
    
            //_____________inflate main_menu.xml file to show option in popup menu
            popupMenu.getMenuInflater().inflate(R.menu.menu_main, popupMenu.getMenu());
    
            //__________set listener to call back on item selection
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    
                //_________override method to process selected popup menu option.
                @Override
                public boolean onMenuItemClick(MenuItem item) {
    
                    //_________Message will be shown, When option selected from popup menu.
                    Toast.makeText(MainActivity.this, "Popup Menu : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                    return false;
                }
            });
            popupMenu.show();
        }
    }
    
    
    

  5. Now all the development steps for menu has completed, Please run the application.




  6. Now click on option menu(three dots on top right corner), this will be open the option menu, then select any option from here. See the result on screen- 





  7. Now click on "Context Menu", this will be open the context menu, then select any option from here. See the result on screen-

     


  8. Now click on "Popup Menu", this will be open the popup menu, then select any option from here. See the result on screen-




  9.  Good bye, Thanks to read this blog.