Menus

Wednesday 7 February 2018

Android Menu

Menus

Menus are a common user interface component in many types of applications.

This guide shows how to create the three fundamental types of menus or action presentations on all versions of Android:

Options menu and app bar
The options menu is the primary collection of menu items for an activity. It's where you should place actions that have a global impact on the app, such as "Search," "Compose email," and "Settings."

Context menu and contextual action mode
A context menu is a floating menu that appears when the user performs a long-click on an element. It provides actions that affect the selected content or context frame.

Popup menu
A popup menu displays a list of items in a vertical list that's anchored to the view that invoked the menu.


Android Option Menu Example

Defining a Menu in XML


It contains three items as show below. It is created automatically inside the res/menu directory.


menu with the following elements:

<menu>
Defines a Menu, which is a container for menu items. A <menu> element must be the root node for the file and can hold one or more <item> and<group> elements.
<item>
Creates a MenuItem, which represents a single item in a menu. This element may contain a nested <menu> element in order to create a submenu.
<group>
An optional, invisible container for <item> elements. It allows you to categorize menu items so they share properties such as active state and visibility. For more information, see the section about Creating Menu Groups.

<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >      <item  android:id="@+id/item1"  
        android:title="Item 1"/> 
   <item  android:id="@+id/item2"  
        android:title="Item 2"/>  
    <item  android:id="@+id/item3"  
        android:title="Item 3"/>  
</menu>  


More Details

Write a Program to create menu with three menu items


Example





activity_main.xml

<?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="com.example.root.myapplication.MainActivity">

    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Menu Program" />
</RelativeLayout>


main.xml   //main.xml file in res/menu

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

<item android:id="@+id/item1"    android:title="item1" />
<item android:id="@+id/item2"    android:title="item2" />
<item android:id="@+id/item3"    android:title="item3" />

</menu>


MainActivity.java


package com.example.root.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    @Override    public boolean onCreateOptionsMenu(Menu menu){

        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

    @Override    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.item1) {
            Toast.makeText(getApplicationContext(), "First Item Selected!",
                    Toast.LENGTH_SHORT).show();
        }
        if (id == R.id.item2) {
            Toast.makeText(getApplicationContext(), "Second Item Selected!", Toast.LENGTH_SHORT).show();
        }
        if (id == R.id.item3) {
            Toast.makeText(getApplicationContext(), "Third Item Selected!",
                    Toast.LENGTH_SHORT).show();
        }
        return true;
    }


}



Problem - res/menu and res/xml are not there


If it is in android studio 2.1.1, to create a res/menu folder follow these steps.
right click on res -> new -> Android resource directory -> change the resource type to 'menu' in the dropdown menu -> click ok
to create menu file in menu folder right click on menu folder -> new -> menu resource file ->give the file name -> click ok.


No comments:

Post a Comment